node에서 시간 많이 쓰는 버그 TOP 3에 드는 것으로,
아래와 같이 만들어 둔 object를 대입해서 초기화 해 버리면 같은 주소를 참조하기 때문에
예상치 못한 결과를 유도하게 된다.
이것에 항상 유의하도록 하고, KEY_C나 KEY_D를 만든 방법으로 초기화 하도록 한다.
//////////REFERENCE TESTER //////////
let _OBJECT = {}
function my_object(value){
this.value = value;
}
function objectTester(){
let object = {value : 0};
//////////// 초기화
_OBJECT["KEY_A"] = object;
_OBJECT["KEY_B"] = object;
_OBJECT["KEY_C"] = {value : 0};
_OBJECT["KEY_D"] = new my_object(0);
console.log(_OBJECT);
/* 실행 결과
{ KEY_A: { value: 0 }, KEY_B: { value: 0 } }
*/
/////////// 값 대입
_OBJECT["KEY_A"].value = 1
_OBJECT["KEY_B"].value = 2
_OBJECT["KEY_C"].value = 3
_OBJECT["KEY_D"].value = 4
console.log(_OBJECT);
/* 실행 결과
{ KEY_A: { value: 2 }, KEY_B: { value: 2 } }
*/
}
objectTester();
0 개의 댓글:
댓글 쓰기