为什么/当提供没有属性名称的变量值时,JavaScript如何/如何允许通过变量名称设置对象的属性名称?

时间:2018-11-02 18:57:53

标签: javascript object-literal

该问题标题令人a舌,如果没有示例,这很难解释:

给出一个变量:

declare const thing: string | number | RegExp;
if (typeGuard(thing, "string")) {
  console.log(thing.charAt(0));
} else if (typeGuard(thing, RegExp)) {
  console.log(thing.flags);
} else {
  console.log(thing.toFixed(0));
}

可以在不显式定义属性名称的情况下创建将变量作为属性值传入的对象:

const string = 'test';

这将导致变量名称用作属性名称,而变量值用作属性值:

const obj = { string };

我想知道此功能的名称,还是该文件记录在预期行为的某个地方?这是特定JS语言版本的一部分吗? (换句话说,这是所有浏览器都支持的东西吗?)

我的第一个想法是,它与销毁分配有一定关系,因为那里存在类似的语法,例如:

{
    string: 'test'
}

但这不是完全一样的东西,所以我不知道这个想法是否有任何优点。

我想确保在使用该语言功能之前先了解它(或决定 if 是否应该使用它,如果它可能不是某个功能,而是更多的只是发生但不应该使用的功能)不能依靠;))

0 个答案:

没有答案