鍍金池/ 問答/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]}

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

回答
編輯回答
眼雜

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

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

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

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

2018年5月14日 13:44