更改子数组中对象的值是否会更改"main"数组中对象的值?



我正在p5.js中使用一系列对象。如果满足与对象的值相关的某些条件,我会创建另一个数组来容纳这些"有效"对象。

我想更改"有效对象"数组和"主"数组的对象的值。如果我从"有效的OBJ"数组中更改它,它是否也从"主"数组更改?

var objects[]; 
var validObjects[];
function setup() {
    createObj();
    myFunc2();
}
function object( name, condition ) {
    // Define a class called 'object'.
    this.name = name;
    this.condition = condition;
}
function createObj() {
    objects[0] = new object( 'obj0', true );
    objects[1] = new object( 'obj1', true );
    objects[2] = new object( 'obj2', false );
    objects[3] = new object( 'obj3', false );
}
function myFunc() {
    // Pick out the valid objects and put them into another array.
    for( var i = 0; i < objects.length; i++ ) {
        if( objects[i].condition == true )
            validObjects.push( objects[i] );
}
function myFunc2() {
    // Change a field of the objects from the new array.
    for( var i = 0; i < validObjects.length; i++ )
        objects[i].condition = !objects[i].condition;
}

MyFunc2()是否会永远更改对象的状况字段?还是我应该以不同的方式处理?

编辑:固定语法。

是在JavaScript中所有对象中的所有对象都是通过参考分配的,而不是值。当您想制作对象的副本时,您需要克隆它。

 var clone = Object.assign({}, cloneTarget); 

也是您的语法:

objects[0] = new object( obj0, true );

似乎不在了,您应该将这些名称更改为literals而不是identifiers正确吗?

objects[0] = new object( 'obj0', true );

最新更新