我正在尝试将数组传递给对象:
function process(pid, size, time, IOCArray, IOCtimeA, status) {
this.pid = pid;
this.size = size;
this.time = time;
this.IOCtimeA = IOCtimeA; // should i use this?
for (var j = 0; j < IOCArray.length; j++) {
this.IOCArray[j] = IOCArray[j];
} // or something like this?
this.status = status;
}
proarray[ID] = new process(ID, size, time, IOCArray, IOCtimeA, status);
现在我如何访问proarray[5].IOCArray[4]
?
实际上我不确定如何将“this”用于数组。
答案 0 :(得分:1)
查看提供的代码,两种建议的解决方案都不理想,因为如果将对象的属性设置为另一个数组,则只需设置对原始数组的引用。如果要修改对象的数组属性,那么您也将修改原始数组。
相反,您将不得不使用的是slice()
方法。这将为您的对象创建一个新的独立数组副本。
示例:
this.IOCArray = IOCArray.slice();
值得注意的是,.slice()
只会生成数组的浅表副本。嵌套数组将设置对原始嵌套数组的引用,因此如果您知道在任何变量中将嵌套数组,那么您也需要slice()
这些嵌套数组。 / p>
答案 1 :(得分:0)
使用this.IOCtimeA=IOCtimeA;
指定对数组的引用。如果您更改IOCtimeA
,proarray[ID].IOCtimeA
也会更改。
使用for
循环或使用@adaneo中的技巧,您将复制值并在其中创建一个独立的数组。