中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

說(shuō)一說(shuō)這“this”

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

JS中不容易懂的概念除了閉包之外,還有一個(gè)應(yīng)該是首當(dāng)其沖:this ,這個(gè)東西經(jīng)常讓人搞混,那么今天我們就來(lái)好好看看它的廬山真面目。

定義一個(gè)對(duì)象:

var Charles = {
    living: true,
    age:23,
    gender:male,
    getGender:function(){ return Charles.gender;
    }
}; console.log(Charles.getGender()); //輸出:male

下面的代碼有一樣的效果:

var Charles = {
    living: true,
    age:23,
    gender:male,
    getGender:function(){ return this.gender; //注意“this” }
}; console.log(Charles.getGender()); //輸出:male

那么,this究竟在代碼里指代的是什么?我們?cè)撛趺捶治,因(yàn)樵诰唧w的環(huán)境里有時(shí)很難分清this指代的真面目。那么,現(xiàn)在,需要記住一句話:
當(dāng)this值的宿主函數(shù)被封裝在另一個(gè)函數(shù)里面,或者在另一個(gè)函數(shù)的上下文中被調(diào)用時(shí),this值永遠(yuǎn)是對(duì)全局(head/window)對(duì)象的引用
也就是說(shuō),this值在嵌套函數(shù)里面,對(duì)于ES5永遠(yuǎn)指向window。

var myObject = {
    myProperty: 'I can see the light',
    myMethod: function(){ var that = this; console.log(this); //輸出:'Object(這里是myObject)' var helperFunction = function(){ console.log(that.myProperty); // 輸出'I can see the light' console.log(this); //如果不使用`that`,則輸出'window',因?yàn)槭窃谇短缀瘮?shù)里面 }(); //立即執(zhí)行 }
}
myObject.myMethod(); //調(diào)用 myMethod

結(jié)合上面的那句話,對(duì)于ES5來(lái)說(shuō),this也就是這個(gè)情況:

var myObject = {
    func1: function(){ console.log(this); //輸出 'Object'(第一層函數(shù)) var func2= function(){ console.log(this); //從此處開(kāi)始,this都是window(第二層函數(shù)) var func3= function(){ console.log(this); //當(dāng)然是window }();
        }();
    }
}
myObject.func1();

如圖

到這里,應(yīng)該明白了this在JS中的位置,相信以后不會(huì)再分不清楚了。


文/Charles_ln(簡(jiǎn)書(shū)作者)
原文鏈接:http://www.jianshu.com/p/847fc5599d3d

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Spring Boot工程結(jié)構(gòu)推薦

下一篇:iOS程序員必看之熱門(mén)書(shū)單