将数组传递给js中的对象

时间:2014-12-06 16:44:22

标签: javascript

我正在尝试将数组传递给对象:

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”用于数组。

2 个答案:

答案 0 :(得分:1)

查看提供的代码,两种建议的解决方案都不理想,因为如果将对象的属性设置为另一个数组,则只需设置对原始数组的引用。如果要修改对象的数组属性,那么您也将修改原始数组。

相反,您将不得不使用的是slice()方法。这将为您的对象创建一个新的独立数组副本。

示例:

this.IOCArray = IOCArray.slice();

值得注意的是,.slice()只会生成数组的浅表副本。嵌套数组将设置对原始嵌套数组的引用,因此如果您知道在任何变量中将嵌套数组,那么您也需要slice()这些嵌套数组。 / p>

Array.prototype.slice() | MDN Documentation

答案 1 :(得分:0)

使用this.IOCtimeA=IOCtimeA;指定对数组的引用。如果您更改IOCtimeAproarray[ID].IOCtimeA也会更改。

使用for循环或使用@adaneo中的技巧,您将复制值并在其中创建一个独立的数组。