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