2017-12-05 2 views
-4

p5.js의 객체 배열로 작업하고 있습니다. 객체의 값과 관련된 어떤 조건이 충족되면, 나는 그 '유효한'객체를 보유 할 다른 배열을 생성합니다.하위 배열의 개체 값을 변경하면 "주"배열에있는 개체의 값이 변경됩니까?

'유효한 개체'배열과 '기본'배열에 대한 개체 값을 변경하고 싶습니다. '유효한 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로부터() 영원히 객체의 상태 필드를 변경? 아니면 다르게 접근해야합니까?

EDITS : 구문 수정.

+0

'object [i] .condition'은 아마도'objects [i] .condition'이어야합니까? (누락 된's' 참고) 그건, 당신이 코드를 실행 해 봤어? 질문에 대한 대답은해야 할 일이 명확해야하며 결과를 살펴 봐야합니다. – Cerbrus

+2

이것을 테스트하고 직접 질문에 답변 할 수 있습니다. – rweisse

+1

' 'valid obj'배열에서 그것을 변경하면 'main'배열에서도 변경됩니까? - 테스트하여 알려주십시오. – Nope

답변

0

예 JavaScript의 모든 개체는 값이 아니라 참조에 의해 할당됩니다. 당신이 그것을 복제 할 필요가있는 객체의 사본을 만들고 싶을 때.

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

또한에 당신의 구문은 다음과 같습니다

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

literals하지 identifiers 해결하려면 이러한 이름을 변경해야 떨어져있는 것 같다?

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

새로운 객체 () – Cerbrus

+0

이 OP의 코드 예제를 읽지 않음에 유의하십시오. 그는 생성자로 정의한 함수 식별자를 사용합니다. 'new object ()에 대한 구문을 유효하게 함. –

+0

아, 그리워 ... – Cerbrus

관련 문제