亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

Wuv1Up / 2557人閱讀

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

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

一。首先:,

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

二。例如:

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

obj.b()時,會輸出1;
var fun = obj.b; fun() 時,會輸出undefined

三。原因:
1.obj.b()這里的this指向的是對象o,因為你調(diào)用這個fn是通過o.fn()執(zhí)行的,那自然指向就是對象o。
2.

var fun = obj.b;
fun();

相當于,

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

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

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

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

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

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

舉例:

(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é):如果返回值是一個對象,那么this指向的就是那個返回的對象,如果返回值不是一個對象那么this還是指向函數(shù)的實例。

3.特殊:雖然null也是對象,但是在這里this還是指向那個函數(shù)的實例,因為null比較特殊。

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/94011.html

相關(guān)文章

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

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

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

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

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

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

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

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

    RobinQu 評論0 收藏0
  • 面試官問:JSthis指向

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

    warnerwu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<