假设我有以下代码:
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没有明确提到类实例。
答案 0 :(得分:4)
明确允许解构对象,这是一个特征
this
仅指一个对象。它没有什么特别之处
只要this
引用一个对象,这绝对没问题。 *
* this
可能不引用对象,具体取决于您拨打someMethod
的方式,例如Foo.someMethod.apply(null)
。但无论如何你真的有更大的问题。