位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 函數(shù) 使用 this

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-25

■知識點(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。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部