Object.assign()键/值语法

时间:2017-05-06 18:53:21

标签: javascript

以下函数使用新键和值更新对象:

function updateObjectWithKeyAndValue(object, key, value) {
    return Object.assign({}, object, { [key]: value })  
}

我不明白为什么keyvalue看起来不同。当key不是时,为什么value在括号中?

2 个答案:

答案 0 :(得分:3)

[key]是ES6 计算属性。这是一个基本的例子:

let obj = {
  [1 + 2]: 'Hello!'
};

console.log(obj[3]);

答案 1 :(得分:2)

计算密钥

例如,这个脚本使用ES5:

function obj(x, y) { z = {}; z[x] = y; return z; }

如果您拨打函数obj("weed", "sativa"),则会返回{ weed: "sativa" }

但是,不能以这种方式同时应用多个密钥,您必须为每个密钥执行此操作:

function obj(w, x, y, z) { v = {}; v[w] = x; v[y] = z; return v; }

ES6 开始,您可以使用计算密钥。 这是什么意思?

而不是那样,你可以这样做:

function obj(x, y) { return { [x]: y }}

它可能看起来不会小得多,但这意味着您可以使用多个动态键,如下所示:

function obj(w, x, y, z) { return { [w]: x, [y]: z }}

现在,执行obj("weed", "sativa", "thc", "40%")将返回{ weed: "sativa", thc: "40%" }