2017-08-29 92 views
0

在以下代碼中,在obj1的對象字面量中,我假設這兩個函數中的'this'都會引用obj1,但是在胖箭頭功能,它沒有。有人能解釋爲什麼嗎?我會假定這些函數要麼是等價的,要麼是在胖箭頭函數中,'this'將在詞彙上定義爲obj1。'this'在對象文字中的箭頭函數vs非箭頭函數中

var obj1 = { 
    name : 'name1', 

    standardFunction : function() { 
    console.log(this.name);  // Refers to obj1 
    }, 

    fatArrowFunction :() => {  // Refers to the global object 
    console.log(this.name);   
    } 
} 

obj1.standardFunction(); 
obj1.fatArrowFunction(); 
+0

這個* *是*從詞法上解決的。即它指的是定義了obj1的環境的'this'的值。而在那裏,'this'不是指'obj1'。 –

回答

1

按照定義,箭頭函數的行爲與傳統行爲不同。使用() => {}語法定義的函數會繼承外部作用域的上下文。