JavaScript 函數(shù) 使用 this
■知識點
JavaScript在函數(shù)體內(nèi)定義了 this關鍵字,this是一個指針型變量,它動態(tài)引用當前的運行環(huán)境,具體說就是調用函數(shù)的對象。調用對象是可以訪問的JavaScript對象,而執(zhí)行上下文的變量對象是一個不可訪問的抽象概念。同時,在一個執(zhí)行上下文中會存在多個可調用函數(shù)的對象,但是一個執(zhí)行上下文只有一個變量對象。
■實例設計
【示例】下面的示例在全局上下文中聲明一個變量X,初始化值為1,然后在obj對象內(nèi)定義一個屬性X,初始化值為2。使用函數(shù)f檢測不同運行環(huán)境下x值的變化,以此檢測this指針的引用對象。
var x = 1; //聲明全局變量并初始化
var obj = {
f: function () { //定義方法 f
console. log (this.x) ; //訪問當前運行環(huán)境中x屬性值
},
x: 2, //定義屬性X,賦值為2
};
//obj環(huán)境執(zhí)行
obj.f () //2
var f1 = obj.f;
//window環(huán)境執(zhí)行
fl(); //1
在上面的代碼中,obj.f()表示在obj對象上調用f函數(shù),則調用對象為obj,此時this就指向obj,this.x就等于obj.x,即返回結果為2。當把obj.f賦值給變量fl,然后在全局上下文中調用fl函數(shù),則f函數(shù)體的運行環(huán)境在全局上下文中執(zhí)行,此時this就指向window,this.x就等于window.x,即返回結果為1。
點擊加載更多評論>>