2016-06-01 49 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