在ES6中是否允许解构Class Instance属性?

时间:2016-02-22 11:14:00

标签: javascript ecmascript-6 destructuring

假设我有以下代码:

class Foo {
    constructor() {
        this.a = 1;
        this.b = 'something';
    }

    someMethod() {
        // Is this legal?
        let { a, b } = this;
    }
}

someMethod中的解构分配是否合法?

我的直觉是它很好,但我在任何文档中都没有看到过这种用法。它目前在巴贝尔工作,但可能是因为在引擎盖下巴贝尔正在将课程转化为一个功能。我的理解是(几乎)JS中的所有内容都是原型继承自Object,所以我可能希望这对于Classes和Class实例也是如此。

我见过的唯一引用是在引擎is here下发生的事情,并指定JS引擎调用内部方法ToObject,它只会在遇到null时抛出TypeError或undefined。但是ToObject docs没有明确提到类实例。

1 个答案:

答案 0 :(得分:4)

明确允许解构对象,这是一个特征 this仅指一个对象。它没有什么特别之处 只要this引用一个对象,这绝对没问题。 *

* this可能引用对象,具体取决于您拨打someMethod的方式,例如Foo.someMethod.apply(null)。但无论如何你真的有更大的问题。