2016-06-01 77 views
4

它我的理解是,這並不工作(這是一個人爲的例子 - 見RxJS什麼我實際運行):這個範圍,箭頭函數原型

function Foo() { 
    this.name = 'Johnny Cash' 
} 

Foo.prototype.who =() => { 
    console.log(this.name) // undefined 
}; 

var foo = new Foo(); 

foo.who() 

由於this可是沒有正確的範圍。但是RxJS文檔中的this頁面(最後2個底部示例)使用它。他們如何運行這個代碼?

RxJS頁面上的代碼是不正確的?或者我需要運行某種巴別克插件(我已經嘗試通過babel-require和babel-polyfill運行,效果相同)

+1

'Foo'和'Emitter'在這個例子中是完全不相關的。可以用許多方法使'foo'對應'this',其中最直接的是'Emitter.prototype.who.call(foo)'。除此之外,你所問的問題還不清楚。 – deceze

+1

這裏也沒有一個「箭頭函數」。 – deceze

+0

Lo.l.我的錯。我試圖設計一個例子。輸入錯誤代碼 – cyberwombat

回答

2

該頁面上的示例已損壞。

這將是公平的假設,因爲它是目前發佈這是從來沒有運行,因爲它在

var subcription = emitter.listen('data', data => console.log(`data: ${data}`); 

線(未配對的括號內)的語法錯誤。

修復並運行之後 - 在前面提到的箭頭函數中,有關於讀取undefined屬性this的其他例外情況。

+0

謝謝。我很懷疑。只需要一個確認 – cyberwombat

+1

@Yashua在第二次看後我已經注意到我*知道*作者,我只是給他們發送了這個問題的鏈接:-) – zerkms

+0

很酷。好一個! – cyberwombat