如何使用javascript?

时间:2018-05-03 11:54:28

标签: javascript javascript-objects

我认为我的问题已经回答,但我找不到能让我满意的答案。

问题在于;

代码打印" 3"但我不明白它怎么可能因为首先是人员分配列表[0]然后我实现person.ID所以javascript的专业确实提供了这个。你可以解释我



var person = {};
person.name = "John";
person.surname = "Connor";
var list = [];
list [0] = person; //In here i did not generate ID 
person.ID = 3;
console.log(list[0].ID);




1 个答案:

答案 0 :(得分:0)

语句list [0] = person;将对象引用(person)加载到Array的第一个索引中。

因此对对象的任何修改,也会更新列表中的对象,反之亦然。因为对象作为引用传递而不是作为值传递。

这就是为什么在第一个索引的person.ID = 3;控制台之后还会打印3

如果你想避免这种情况,你可以在推入数组之前复制一个对象。

要复制,您可以使用Object.assign({},person)来制作对象的浅表副本

现在以下代码不会打印3.

var person = {};
person.name = "John";
person.surname = "Connor";
var list = [];
list [0] = Object.assign({},person); //In here i did not generate ID
person.ID = 3;
console.log(list[0].ID);