【发布时间】:2016-02-22 11:13:59
【问题描述】:
假设我有以下代码:
class Foo {
constructor() {
this.a = 1;
this.b = 'something';
}
someMethod() {
// Is this legal?
let { a, b } = this;
}
}
someMethod 中的解构赋值合法吗?
我的直觉是它很好,但我在任何文档中都没有看到这种用法。它目前在 Babel 中工作,但大概是因为 Babel 正在将类转换为函数。我的理解是(几乎)JS 原型中的所有内容都继承自 Object,所以我可能认为 Classes 和 Class 实例也是如此。
我看到的唯一参考 is here 并指定 JS 引擎调用内部方法 ToObject 只会在遇到 null 或 undefined 时抛出 TypeError。但是ToObject docs 没有明确提到类实例。
【问题讨论】:
-
与您的问题无关,但您有什么特别的原因使用 let 而不是 var 吗?
-
是的,但
()在Foo之后不是 -
很多程序员每次都会使用
let,因为他们听说这是个好主意;不管是否有任何方块在游戏中……你对let有问题吗? -
@VladNicula 对于一个最小(几乎)工作示例来说似乎是一个奇怪的问题,该示例显然旨在显示问题的主要内容
-
@all,如果有某种性能优势,我只是好奇。有趣的是,你们中的大多数人是如何从我的问题中得到负面情绪的 :)
标签: javascript ecmascript-6 destructuring