成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端js -- this指向總結(jié)。

Wuv1Up / 2515人閱讀

摘要:面向?qū)ο缶幊讨赶蛞弧?偨Y(jié)的值要等到代碼真正執(zhí)行是才能確定。,調(diào)用,只想我們指定的對(duì)象后續(xù)更新。對(duì)象調(diào)用,如執(zhí)行,指向。默認(rèn)的,指向全局變量。特殊雖然也是對(duì)象,但是在這里還是指向那個(gè)函數(shù)的實(shí)例,因?yàn)楸容^特殊。

          面向?qū)ο缶幊?--- this指向

一。首先:,

this的指向在函數(shù)定義的時(shí)候是確定不了的,只有函數(shù)執(zhí)行的時(shí)候才能確定this到底指向誰,實(shí)際上this的最終指向的是那個(gè)調(diào)用它的對(duì)象。

二。例如:

var obj = {
   a : 1,
   b : function() { 
       console.log(this.a) 
   }
}

當(dāng) obj.b()時(shí),會(huì)輸出1;
當(dāng) var fun = obj.b; fun() 時(shí),會(huì)輸出undefined

三。原因:
1.obj.b()這里的this指向的是對(duì)象o,因?yàn)槟阏{(diào)用這個(gè)fn是通過o.fn()執(zhí)行的,那自然指向就是對(duì)象o
2.

var fun = obj.b;
fun();

相當(dāng)于,

var b = function(){ 
   console.log(this.a)
};
obj = {
   a:1,
   b:b
};
var fun = obj.b;
fun();

雖然funobj.b的一個(gè)引用,但是實(shí)際上,他引用的是b函數(shù)本身,因此此時(shí)的fun()其實(shí)是一個(gè)不帶任何修飾的函數(shù)調(diào)用,只是在將fn賦值給變量j的時(shí)候并沒有執(zhí)行所以最終指向的是window。

四??偨Y(jié): this的值要等到代碼真正執(zhí)行是才能確定。
同時(shí),this的值有如下幾種情況:
1.new調(diào)用時(shí)指的是被構(gòu)造的對(duì)象。(

function Fn(){
   this.user = "貓咪"
}; 
var a = new Fn(); 
consle.log(a.user); //貓咪

這里之所以對(duì)象a可以點(diǎn)出函數(shù)Fn里面的user是因?yàn)?b>new關(guān)鍵字可以改變this的指向,將這個(gè)this指向?qū)ο?b>a,為什么我說a是對(duì)象,因?yàn)橛昧?b>new關(guān)鍵字就是創(chuàng)建一個(gè)對(duì)象實(shí)例,我們這里用變量a創(chuàng)建了一個(gè)Fn的實(shí)例[相當(dāng)于復(fù)制了一份Fn到對(duì)象a里面],此時(shí)僅僅只是創(chuàng)建,并沒有執(zhí)行,而調(diào)用這個(gè)函數(shù)Fn的是對(duì)象a,那么this指向的自然是對(duì)象a,那么為什么對(duì)象a中會(huì)有user,因?yàn)槟阋呀?jīng)復(fù)制了一份Fn函數(shù)到對(duì)象a中,用了new關(guān)鍵字就等同于復(fù)制了一份。)
2.call,apply調(diào)用,只想我們指定的對(duì)象(后續(xù)更新)。
3.對(duì)象調(diào)用,如執(zhí)行obj.b(),this指向obj
4.默認(rèn)的,指向全局變量window。

特殊:構(gòu)造函數(shù)版this, 當(dāng)this碰到return時(shí)。

舉例:

(1).

function fn()  { 
     this.user = "金毛"; 
     return {};
 }; 
 var a = new fn;  
 console.log(a.user); //undefined

(2).

function fn()  {   
    this.user = "金毛";    
    return function(){};
}; 
var a = new fn;  
console.log(a.user); //undefined 

(3).

function fn()  {  
    this.user = "金毛";   
    return 1;
}; 
var a = new fn;  
console.log(a.user); //金毛

(4).

function fn()  {  
    this.user = "金毛";  
    return undefined;
}; 
var a = new fn;  
console.log(a.user); //金毛

2.總結(jié):如果返回值是一個(gè)對(duì)象,那么this指向的就是那個(gè)返回的對(duì)象,如果返回值不是一個(gè)對(duì)象那么this還是指向函數(shù)的實(shí)例。

3.特殊:雖然null也是對(duì)象,但是在這里this還是指向那個(gè)函數(shù)的實(shí)例,因?yàn)閚ull比較特殊。

function fn()  {  
    this.user = "金毛";  
    return null;
}; 
var a = new fn;   
console.log(a.user); //金毛

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94011.html

相關(guān)文章

  • JS題目總結(jié):原型鏈/new/json/MVC/Promise

    摘要:數(shù)據(jù)管理,包括數(shù)據(jù)邏輯數(shù)據(jù)請(qǐng)求數(shù)據(jù)存儲(chǔ)等功能。負(fù)責(zé)處理的事件,并更新也負(fù)責(zé)監(jiān)聽的變化,并更新,控制其他的所有流程。上面代碼就是一個(gè)最簡(jiǎn)單的類,構(gòu)造函數(shù)創(chuàng)建出來的對(duì)象自身有屬性,其原型上面有一個(gè)屬性。 JS題目總結(jié):原型鏈/new/json/MVC/Promise 1原型鏈相關(guān) showImg(https://segmentfault.com/img/remote/14600000161...

    biaoxiaoduan 評(píng)論0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠矶际侵械闹鲗?dǎo)范式。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠矶际荍avaScript中的主導(dǎo)范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數(shù)式編程越來越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強(qiáng)調(diào)減少對(duì)程序外部狀態(tài)產(chǎn)生改變的方式。因此,...

    cfanr 評(píng)論0 收藏0
  • 2018年螞蟻金服前端一面總結(jié)(面向2019屆學(xué)生)

    摘要:在這次螞蟻金服的電話面試?yán)锩嬲J(rèn)識(shí)到了自己很多不足的地方吧。把字符串分割為字符串?dāng)?shù)組。從起始索引號(hào)提取字符串中指定數(shù)目的字符。通常消息包括客戶機(jī)向服務(wù)器的請(qǐng)求消息和服務(wù)器向客戶機(jī)的響應(yīng)消息。 先簡(jiǎn)短的介紹一下我自己吧,我是一個(gè)前端學(xué)習(xí)者,雖然我基礎(chǔ)知識(shí)也學(xué)了比較好,但是許久不用的知識(shí)就像流失的水,很容易就忘。在這次螞蟻金服的電話面試?yán)锩嬲J(rèn)識(shí)到了自己很多不足的地方吧。雖然在阿里內(nèi)推后的人才...

    VEIGHTZ 評(píng)論0 收藏0
  • 2018年螞蟻金服前端一面總結(jié)(面向2019屆學(xué)生)

    摘要:在這次螞蟻金服的電話面試?yán)锩嬲J(rèn)識(shí)到了自己很多不足的地方吧。把字符串分割為字符串?dāng)?shù)組。從起始索引號(hào)提取字符串中指定數(shù)目的字符。通常消息包括客戶機(jī)向服務(wù)器的請(qǐng)求消息和服務(wù)器向客戶機(jī)的響應(yīng)消息。 先簡(jiǎn)短的介紹一下我自己吧,我是一個(gè)前端學(xué)習(xí)者,雖然我基礎(chǔ)知識(shí)也學(xué)了比較好,但是許久不用的知識(shí)就像流失的水,很容易就忘。在這次螞蟻金服的電話面試?yán)锩嬲J(rèn)識(shí)到了自己很多不足的地方吧。雖然在阿里內(nèi)推后的人才...

    RobinQu 評(píng)論0 收藏0
  • 面試官問:JSthis指向

    摘要:之前寫過一篇文章面試官問能否模擬實(shí)現(xiàn)的和方法就是利用對(duì)象上的函數(shù)指向這個(gè)對(duì)象,來模擬實(shí)現(xiàn)和的。雖然實(shí)際使用時(shí)不會(huì)顯示返回,但面試官會(huì)問到。非嚴(yán)格模式下,和,指向全局對(duì)象 前言 面試官出很多考題,基本都會(huì)變著方式來考察this指向,看候選人對(duì)JS基礎(chǔ)知識(shí)是否扎實(shí)。讀者可以先拉到底部看總結(jié),再谷歌(或各技術(shù)平臺(tái))搜索幾篇類似文章,看筆者寫的文章和別人有什么不同(歡迎在評(píng)論區(qū)評(píng)論不同之處),...

    warnerwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<