为什么下面的代码打印" Tree"," Tree",而不是#34; Bear"," Tree"?
var file_array = new Array(100);
var fileobject = {name: null , folder: null , url: null , modified: null};
fileobject.name = "Bear";
file_array[0] = fileobject;
fileobject.name = "Tree";
file_array[1] = fileobject;
console.log(file_array[0].name);
console.log(file_array[1].name);
答案 0 :(得分:2)
只涉及一个对象。使用=
分配对象值会为对象分配引用,而不是副本。
复制对象是可能的,但在一般情况下,它可能会变成一个非常困难的问题(由于像引用周期这样的事情)。如果您需要大量这些对象,更好的解决方案是编写一个函数,在调用它时返回一个新对象:
function makeFileObject(name) {
return {name: name , folder: null , url: null , modified: null};
}
file_array[0] = makeFileObject("Bear");
file_array[1] = makeFileObject("Tree");