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文档没有明确提及类实例。
明确允许销毁对象,这是一项功能。
this仅指对象。没什么特别的。
只要this引用一个对象,这绝对是可以的。*
* 根据您的调用方式,this可能不会引用一个对象someMethod,例如Foo.someMethod.apply(null)。但是,无论如何,您确实有更大的问题。