绑定ES6类方法的最佳方法

时间:2016-02-19 01:50:02

标签: javascript ecmascript-6

在ES5中,我们会创建一个绑定方法,如下所示:

function FakeClass() {
    this.foo = this._foo.bind(this);
    // or, with Underscore/Lodash
    // this.foo = _.bind(this.foo, this);
    // or
    // _.bindAll(this, 'foo');
}
FakeClass.prototype._foo = function() { ...

使用ES6语法,这似乎不会消失;似乎我仍然必须明确地绑定方法:

class FakeClass {
    constructor() {
        this.foo = this._foo.bind(this);
    }
    _foo() { ...
}

所以,我的问题是:有更好的方式实际上是(当前的或计划的)JS的一部分吗?

注意:我看到一些Stack Overflow答案提到了这种语法:

class FakeClass {
    foo = () => { ...
}

然而,当我尝试使用该语法时,只有Babel允许它; Chrome和我的IDE都告诉我这是无效的语法。据推测,这是因为foo = () => {语法来自一些未完成的ES7或ES8提案。但是,我无法向Google提供答案,直到我这样做,我仍然犹豫是否要在我的代码中添加(将来可能无效)语法。

0 个答案:

没有答案