摘要:中指向問(wèn)題一直是個(gè)坑,之前一直是懵懵懂懂的,大概知道一點(diǎn),但一直不知道各種情況下指向有什么區(qū)別,今天親自動(dòng)手測(cè)試了下的指向。這就是我關(guān)于學(xué)習(xí)的總結(jié),希望能給需要的人點(diǎn)幫助,然后有啥不足希望有大神能指點(diǎn)出來(lái)。
js中this指向問(wèn)題一直是個(gè)坑,之前一直是懵懵懂懂的,大概知道一點(diǎn),但一直不知道各種情況下指向有什么區(qū)別,今天親自動(dòng)手測(cè)試了下this的指向。
1.在對(duì)象中的this
對(duì)象中的this指向我們創(chuàng)建的對(duì)象,例如:
var obj ={ ccc : 1122, ffffd : 2233, ded : function(){ console.log(this); } , fff : function(){ console.log(this === obj ); } } obj.ded(); obj.fff();
在chrome中執(zhí)行的答案如下:
上圖我們可以看出我們執(zhí)行obj對(duì)象下的ded函數(shù)時(shí),打印出來(lái)的事Object對(duì)象里面的所有屬性,展示這個(gè)對(duì)象
可以看到obj對(duì)象包含的方法和屬性都包含在this對(duì)象下面,再運(yùn)行fff函數(shù),把this和obj對(duì)象進(jìn)行比較,可以看出這兩個(gè)是恒等的,所以在對(duì)象里的this指向這個(gè)對(duì)象。
2.直接調(diào)用函數(shù)時(shí)的this指向
先創(chuàng)建一個(gè)函數(shù):
function main(){ this.aad = 234; console.log(this); } main();
運(yùn)行效果如下:
可以看到我們打印出來(lái)的this對(duì)象指向全局變量window,而創(chuàng)建的aad變量直接包含在了window對(duì)象下面了,所以直接調(diào)用函數(shù)時(shí)this是指向window對(duì)象的。
3.構(gòu)造函數(shù)中的this指向
當(dāng)我們創(chuàng)建一個(gè)構(gòu)造函數(shù)時(shí),并且實(shí)例化一個(gè)對(duì)象時(shí),this的指向哪里呢?先創(chuàng)建一個(gè)函數(shù)
function main(){ this.aad = 234; this.def = function(){ console.log(this); }; this.foo = function(){ console.log(this === xxx); }; this.xoo = function(){ console.log(this === main); }; } var xxx = new main(); xxx.def(); xxx.foo(); xxx.xoo();
可以看出xxx.def函數(shù)還是指向main函數(shù),但這只是把上下文給打印出來(lái)了,但當(dāng)我們打印this與構(gòu)造函數(shù)以及實(shí)現(xiàn)對(duì)象比較時(shí)就可以看出區(qū)別了,與構(gòu)造函數(shù)main比較出來(lái)的值是false;與xxx函數(shù)比較時(shí)顯示是true,所以構(gòu)造函數(shù)this事指向當(dāng)前實(shí)例化對(duì)象的。
這就是我關(guān)于this學(xué)習(xí)的總結(jié),希望能給需要的人點(diǎn)幫助,然后有啥不足希望有大神能指點(diǎn)出來(lái)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/49769.html
摘要:中指向問(wèn)題一直是個(gè)坑,之前一直是懵懵懂懂的,大概知道一點(diǎn),但一直不知道各種情況下指向有什么區(qū)別,今天親自動(dòng)手測(cè)試了下的指向。這就是我關(guān)于學(xué)習(xí)的總結(jié),希望能給需要的人點(diǎn)幫助,然后有啥不足希望有大神能指點(diǎn)出來(lái)。 js中this指向問(wèn)題一直是個(gè)坑,之前一直是懵懵懂懂的,大概知道一點(diǎn),但一直不知道各種情況下指向有什么區(qū)別,今天親自動(dòng)手測(cè)試了下this的指向。 1.在對(duì)象中的this對(duì)象中的t...
摘要:當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈。可以指向不同的運(yùn)行環(huán)境,這里的運(yùn)行環(huán)境本質(zhì)上指的是對(duì)象,可以是內(nèi)建對(duì)象自定義對(duì)象或者全局對(duì)象。 今天早上看到公眾號(hào)推送了阮一峰老師的文章JavaScript 的 this 原理,文章不是很長(zhǎng)于是研究了一下。 看完自己的總結(jié)如下: this this 指向函數(shù)運(yùn)行時(shí)所在的環(huán)境。 函數(shù)運(yùn)行在對(duì)象內(nèi),this 就指向該對(duì)象 運(yùn)行在全局...
摘要:被克隆的對(duì)象稱之為新對(duì)象的原型,新對(duì)象保存一個(gè)指向其原型的引用。一個(gè)對(duì)象是如何與其原型聯(lián)系起來(lái)的呢答對(duì)象的屬性指向其構(gòu)造函數(shù)的。如何實(shí)現(xiàn)繼承呢使構(gòu)造函數(shù)的等于另一個(gè)構(gòu)造函數(shù)的一個(gè)實(shí)例這樣就使得繼承于。 眾所周知,在javascript這門動(dòng)態(tài)類型語(yǔ)言中,是不存在如傳統(tǒng)靜態(tài)類型語(yǔ)言如c++或java中對(duì)類的支持的。后者是天生為面向?qū)ο缶幊潭O(shè)計(jì),其中涉及的一些概念如繼承、多態(tài)、函數(shù)重載在...
摘要:關(guān)于的指向問(wèn)題算的上是中的一個(gè)十分重要的問(wèn)題了。首先,的指向問(wèn)題可以用一句話總結(jié)就是總是指向調(diào)用的對(duì)象,也就是說(shuō)指向誰(shuí)與函數(shù)聲明的位置沒(méi)有關(guān)系,只與調(diào)用的位置有關(guān)。此外注意幾種特殊情況,特別是中的箭頭函數(shù)。 關(guān)于this的指向問(wèn)題算的上是js中的一個(gè)十分重要的問(wèn)題了。今天把這個(gè)問(wèn)題總結(jié)下,加深下自己對(duì)this的理解。首先,this的指向問(wèn)題可以用一句話總結(jié)就是:this總是指向調(diào)用的對(duì)...
閱讀 1393·2021-11-24 09:38
閱讀 2095·2021-09-22 15:17
閱讀 2393·2021-09-04 16:41
閱讀 3487·2019-08-30 15:56
閱讀 3520·2019-08-29 17:19
閱讀 1981·2019-08-28 18:09
閱讀 1258·2019-08-26 13:35
閱讀 1718·2019-08-23 17:52