Javascript Object.assign行为异常

时间:2019-03-06 14:44:07

标签: javascript

在以下Javascript中,结果是它显示1、2、3。我希望它显示:1、2、2。我的理解是Object.assign会将值复制到一个对象中。

var myobj = {
  mynum: 1,
  mystr: "test",
  mydata: 6
}
alert(myobj.mynum);

let secondobj = myobj;
secondobj.mynum = 2;
alert(myobj.mynum);

let thirdobj = Object.assign(myobj);
thirdobj.mynum = 3;
alert(myobj.mynum);

2 个答案:

答案 0 :(得分:2)

是同一物体

var foo = {}
var bar = Object.assign(foo)
console.log(foo === bar) // true

要复制对象值,请使用

var bar = Object.assign({}, foo)

或散布运算符(ECMAScript 2018中的新增功能)

var bar = { ...foo };

根据您的情况

let thirdobj = Object.assign({}, myobj);

答案 1 :(得分:0)

定义为Object.assign(目标,源)

因此,这将起作用:

var myobj = {mynum: 1, mystr: "test", mydata: 6}
alert(myobj.mynum);

let secondobj = myobj;
secondobj.mynum = 2;
alert(myobj.mynum);

let thirdobj = {};
Object.assign(thirdobj, myobj);
thirdobj.mynum = 3;
alert(myobj.mynum);

您还可以使用:

let thirdobj = { ... myobj};
thirdobj.mynum = 3;
alert(myobj.mynum);

为简洁起见