[英]Javascript Object.assign not behaving as expected
In the following Javascript, the result is that it displays 1, 2, 3. I would expect it to display: 1, 2, 2. My understanding was that Object.assign
would copy the values in an object. 在以下Javascript中,结果是它显示1、2、3。我希望它显示为:
Object.assign
。我的理解是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);
It is the same object 是同一对象
var foo = {}
var bar = Object.assign(foo)
console.log(foo === bar) // true
To copy object values use 要复制对象值,请使用
var bar = Object.assign({}, foo)
or spread operator (new in ECMAScript 2018) 或散布运算符(ECMAScript 2018中的新增功能)
var bar = { ...foo };
For your case 对于你的情况
let thirdobj = Object.assign({}, myobj);
The definition is Object.assign(target, source) 定义为Object.assign(目标,源)
So, this would work: 因此,这将起作用:
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);
You could also use: 您还可以使用:
let thirdobj = { ... myobj};
thirdobj.mynum = 3;
alert(myobj.mynum);
for brevity 为了简洁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.