2017-06-18 43 views
0

我對構造函數裏面的箭頭函數有些迷惑。箭頭函數如何在構造函數中工作?

據我所知:如果我們使用箭頭函數,關鍵字this不會反彈到實際函數。它是從父範圍繼承的。

讓我們例如:

var d = { 
    b: 'b', 
    x:() =>{ 
    console.log(this); // this will return Window Object. 
} 
} 
d.x(); 

將打印Window對象。沒事兒。

但在構造函數

function A(){ 
    this.b ='b'; 
    this.x =() =>{ 
    console.log(this); 
    } 
} 
var c = new A() 
c.x(); 

此打印對象c。但據我說,它應該返回窗口對象。爲什麼?

+4

你的*詞法範圍*已經是'A'(否則,'this.x = ...'首先不會起作用)。 – haim770

+0

這樣做會變得很有趣:b = new A(); c = new A(); b.x = c.x; –

回答

1

在構造函數this中引用構造對象。你爲什麼要做this.b ='b';

由於箭頭函數只是捕獲當前上下文,因此它捕獲構造函數中的對象。

相關問題