Object.assign会覆盖原始的refereneces吗?

时间:2017-04-12 08:45:07

标签: javascript

我试图"合并"两个具有Object.assign()的对象,但不知何故原始对象被覆盖。参见示例:



var x = {x:1};
var y = {y:2};

var z = Object.assign(x, y);

// what I've expected
console.log(z); // {"x": 1, "y": 2}

// what I haven't expected
console.log(x); // {"x": 1, "y": 2}




3 个答案:

答案 0 :(得分:2)

必须提供一个空对象作为Object.assign的第一个参数,以便创建一个新的合并对象。

var x = {
  x: 1
};
var y = {
  y: 2
};

var z = Object.assign({}, x, y);

// new object
console.log(z); // {"x": 1, "y": 2}

// still the same
console.log(x); // {"x": 1}
console.log(y); // {"y": 2}

You can read more information about Object.assign here.

答案 1 :(得分:1)

您需要更改如下

var z = Object.assign({},x, y);

这是工作的jsfiddle:https://jsfiddle.net/ht7jumh6/

答案 2 :(得分:1)

将空{}传递给assign()作为第一个参数。

var x = {x:1};
var y = {y:2};

var z = Object.assign({},x, y);

console.log(z); // {"x": 1, "y": 2}

console.log(x); // {"x": 1}