我的理解是这行不通(这是一个人为的例子 - 请参阅 RxJS 以了解我实际运行的内容):
function Foo() {
this.name = 'Johnny Cash'
}
Foo.prototype.who = () => {
console.log(this.name) // undefined
};
var foo = new Foo();
foo.who()
因为 this
没有正确的范围。然而this RxJS 文档上的页面(最后 2 个底部示例)使用它。他们如何运行此代码?
是不是RxJS页面的代码不对?还是我需要运行某种 Babel 插件(我已经尝试运行具有相同效果的 babel-require 和 babel-polyfill)
最佳答案
该页面上的示例已损坏。
假设它从未像当前发布的那样运行是公平的,因为它在
var subcription = emitter.listen('data', data => console.log(`data: ${data}`);
行(不是成对的括号)。
修复并运行后 - 关于读取 undefined
的属性还有其他异常,即上述箭头函数中的 this
。
关于javascript - 箭头函数原型(prototype)中的这个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557998/