我正在使用p5.js中的一个对象数组。如果满足与对象值相关的某些条件,我创建另一个数组来保存那些“有效”对象。
我想更改'valid objects'数组和'main'数组的对象值。如果我从'有效obj'数组中更改它,它是否也会从'main'数组更改它?
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()是否会永远更改对象的条件字段?或者我应该采用不同的方法吗?
编辑:修正语法。
答案 0 :(得分:0)
是的,在javascript中,所有对象都是通过引用而不是值来分配的。如果要复制对象,则需要克隆它。
var clone = Object.assign({}, cloneTarget);
还有你的语法:
objects[0] = new object( obj0, true );
似乎已关闭您应该将这些名称更改为literals
而不是identifiers
正确吗?
objects[0] = new object( 'obj0', true );