这个范围在箭头函数原型中

时间:2016-06-01 01:20:11

标签: javascript ecmascript-6 rxjs arrow-functions

我的理解是,这不起作用(这是一个人为的例子 - 请参阅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插件(我已尝试通过babel-require和babel-polyfill运行同样的效果)

1 个答案:

答案 0 :(得分:2)

该页面上的示例已损坏。

假设它从未按照当前发布的方式运行是公平的,因为它在

中有语法错误
var subcription = emitter.listen('data', data => console.log(`data: ${data}`);

行(不是成对的括号)。

在修复并运行之后 - 还有其他关于读取undefined属性的例外情况,在前面提到的箭头函数中是this