Javascript 真实用例动态(计算)属性

Javascript 真实用例动态(计算)属性,javascript,ecmascript-6,Javascript,Ecmascript 6,动态特性: var obj = { // Computed (dynamic) property names [ 'prop_' + (() => 42)() ]: 42 }; 这当然很花哨。但是,在哪里可以不增加不必要的复杂性而使用它呢?如果属性名是常量: var obj = { [SOME_CONSTANT]: 42 }; 我想要它的一个例子是,JSON的属性名是在基于Java类的生成文件中定义的 // Generated var SomeJsonBodyParams =

动态特性:

var obj = {
  // Computed (dynamic) property names
  [ 'prop_' + (() => 42)() ]: 42
};

这当然很花哨。但是,在哪里可以不增加不必要的复杂性而使用它呢?

如果属性名是常量:

var obj = { [SOME_CONSTANT]: 42 };

我想要它的一个例子是,JSON的属性名是在基于Java类的生成文件中定义的

// Generated
var SomeJsonBodyParams = {NAME: 'name', ID: 'id', ETA, 'estimatedTimeOfArrival'};

// Using it
sendAjax('some/url', {
    [SomeJsonBodyParams.NAME] = userData.name,
    ...
});
我们甚至有一个方法,这样我们就可以做到这一点

function makeObj() {
  var obj = {};
  for (var i=0; i < arguments.length; i+=2) {
      obj[i] = obj[i+i];
  }
  return obj;
}

sendAjax('some/url', makeObj(
    SomeJsonBodyParams.NAME, userData.name,
    ...
));
函数makeObj(){
var obj={};
对于(变量i=0;i
例如,当您想使用常量作为对象中的键时,可以使用它

const DATA_TYPE = {
    PERSON: 'person',
    COMPANY: 'company'
};

let cache = {
    [DATA_TYPE.PERSON]: getPerson()
};
以及以后的访问:

cache[DATA_TYPE.PERSON]
而不是
数据类型。PERSON
可以是任何东西(包括一些实时计算值)。

假设您有:

var hi = 'hi';
var test = 'test';
var hello = 'hello';
而不是:

var object = {};

object[hi] = 111;
object[test] = 222;
object[hello] = 333;
您可以用更短的语法编写:

var object = {
    [hi]: 111,
    [test]: 222,
    [hello]: 333
}

您可以在
类中使用它
,并与以下各项一起使用:


它不能用于计算代表价格+税收或类似价格的财产的价值吗?@SamHolder这将是一个真正的动态财产,但OP讨论的是问题中的示例中的动态财产名称。请查看我们的规范及其所有相关问题,以了解使用案例的概述Sokay。。。现在我自己也用了:)
{[match.isHomeMatch'home':'away']:own(),[match.isHomeMatch'away':'home']:theres()
class MyClass {
    [Symbol.iterator]() {
        // my iterator
    }
}