数组内部的Javascript对象 - 错误地评估

时间:2017-02-16 16:07:47

标签: javascript arrays object

为什么下面的代码打印" 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); 

1 个答案:

答案 0 :(得分:2)

只涉及一个对象。使用=分配对象值会为对象分配引用,而不是副本。

复制对象是可能的,但在一般情况下,它可能会变成一个非常困难的问题(由于像引用周期这样的事情)。如果您需要大量这些对象,更好的解决方案是编写一个函数,在调用它时返回一个新对象:

function makeFileObject(name) {
  return {name: name , folder: null , url: null , modified: null};
}

file_array[0] = makeFileObject("Bear");
file_array[1] = makeFileObject("Tree");