>

내 질문에 이미 답변 한 것 같지만 만족할만한 답변을 찾을 수 없습니다.

문제는;

코드는 "3"을 인쇄하지만 처음에는 사람이 할당 한 목록이기 때문에 어떻게 될 수 있는지 이해하지 못합니다. [0] 그런 다음 person.ID를 구현하여 자바 스크립트의 전문 분야에서이를 제공합니다.

var person = {};
person.name = "John";
person.surname = "Connor";
var list = [];
list [0] = person; //In here i did not generate ID 
person.ID = 3;
console.log(list[0].ID);

  • 답변 # 1

    성명 list [0] = person;  Array의 첫 번째 인덱스에 객체 참조 (person)를로드합니다.

    따라서 객체를 수정하면 객체 내부 목록도 업데이트되고 그 반대도 마찬가지입니다. 객체가 값이 아닌 참조로 전달되기 때문입니다.

    그래서이 person.ID = 3; 이후  첫 번째 색인의 콘솔은 또한 3 를 인쇄합니다 .

    이 문제를 피하려면 Array로 이동하기 전에 객체를 복사 할 수 있습니다.

    복사하려면 Object.assign({},person) 를 사용할 수 있습니다  객체의 얕은 사본을 만듭니다

    이제 다음 코드는 3을 인쇄하지 않습니다.

    var person = {};
    person.name = "John";
    person.surname = "Connor";
    var list = [];
    list [0] = Object.assign({},person); //In here i did not generate ID
    person.ID = 3;
    console.log(list[0].ID);
    
    

  • 이전 python 3.x - 다른 NaN을 유지하면서 데이터 프레임에서 초기 NaN 제거
  • 다음 python - PyCharm이 gmpy2를 찾을 수 없습니다 (확인되지 ​​않은 참조)