【发布时间】:2016-09-30 04:36:38
【问题描述】:
据我了解,这是行不通的(这是一个人为的示例 - 请参阅 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,效果相同)
【问题讨论】:
-
Foo和Emitter在此示例中完全不相关。可以通过多种方式使foo对应于this,其中最直接的是Emitter.prototype.who.call(foo)。除此之外,还不清楚您在问什么。 -
这里也没有一个“箭头函数”。
-
大声笑。我的错。我试图设计一个例子。错别字已修复
-
该示例代码确实看起来不对;也许这只是作者的一个错误。
-
@zerkms 很好,如果我运行这个
this.name是未定义的。所以我假设这不在我期望的范围内——也许这是一个更好的措辞。其他类似的 SO 问题似乎同意这是不可能的。那么 RxJS 为什么或如何这样做呢?我正在尝试运行他们的代码,但即使使用 Babel 也无法运行
标签: javascript ecmascript-6 rxjs arrow-functions