在ES6中是否允许销毁类实例属性?

bas*_*ten 4 javascript destructuring ecmascript-6

假设我有以下代码:

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

    someMethod() {
        // Is this legal?
        let { a, b } = this;
    }
}
Run Code Online (Sandbox Code Playgroud)

销毁工作someMethod合法吗?

我的直觉是,这很好,但是我在任何文档中都没有提到这种用法。它目前可在Babel中使用,但大概是因为Babel在后台将类转换为函数。我的理解是(几乎)JS中的所有东西都原型地继承自Object,因此我可能希望对Classes和Class实例也是如此。

我所见的关于引擎盖下发生的情况的唯一参考是在此处,它指定JS引擎调用内部方法ToObject,该方法仅在遇到nullor 时才会抛出TypeError undefined。但是ToObject文档没有明确提及类实例。

dec*_*eze 5

明确允许销毁对象,这是一项功能。
this仅指对象。没什么特别的。
只要this引用一个对象,这绝对是可以的。*

* 根据您的调用方式,this可能不会引用一个对象someMethod,例如Foo.someMethod.apply(null)。但是,无论如何,您确实有更大的问题。