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