在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ Javascript 箭頭函數(shù) this綁定的問題

Javascript 箭頭函數(shù) this綁定的問題

function test1(){
    this.a=55;
    return {
        a:10,
        b:()=>{return this;}
    };
}

function test2(){
    this.a=55;
    return{
        a:10,
        b:function(){return this;}
    };
}

var f1=new test1();
var f2=new test2();
console.log(f1.b());//輸出test1 {a:55}
console.log(f2.b());//輸出{a:10,b:[Function b]}

不理解的一點在于:箭頭函數(shù)是詞法作用域,但是返回的時候莫名奇妙綁定到了構(gòu)造函數(shù)上,按道理不應(yīng)該也是在生成的對象上嘛

回答
編輯回答
眼雜

你只需要理解是箭頭函數(shù)跟普通函數(shù)不一樣,而不是箭頭函數(shù)里的 this 跟普通函數(shù)里的 this (性質(zhì))不一樣。

箭頭函數(shù)中的 this 只不過是跳過了箭頭函數(shù)而已,不是靜態(tài)綁定。

2017年8月23日 23:09
編輯回答
瞄小懶

對于一般的函數(shù)來說,this是動態(tài)綁定的,也就是誰調(diào)用就指向誰。而箭頭函數(shù)有一個特點,就是內(nèi)部this指向父級作用域中的this,實際上是因為箭頭內(nèi)部沒有自己的this,導(dǎo)致內(nèi)部的this就是外層代碼的this。這更類似于閉包,調(diào)用了父級作用域定義的變量。這樣的話,不論你在什么時候調(diào)用都是聲明時的指向。也就是問題中輸出的"{a: 55}"

2018年5月14日 13:44