2017-12-22 21 views
0

Object의 일부 변수가 변경 될 경우 알림을 받아야합니다. 그러나 Object은 미리 정의되어 있지 않습니다. 나는이 모든 전문가에 Node.js의 객체에서 변수보기

gawk

watchObject

watchjs

Watchers 아래에 Object이 미리 정의되어 시도했다.

다음과 같은 기능이 필요합니다.

//Initially the Object will be empty. 
var ex1 = {  
}; 

//Will watch for variable1 in that Object 
watch(ex1, "variable1", function(){ 
    console.log("Variable1 changed"); 
}); 

//Changing or Adding a variable1 in Object. Now the above watch should trigger. 
ex1 = { 
    variable1 : "Hai", 
    variable2 : "Hello" 
} 

Watchers 어떤 조정이 가능합니까?

+3

예제의 개체에 대해서는 아무 것도 변경하지 않습니다. 완전히 새로운 객체를 만들고 이전 객체를 버리는 것입니다. 디버거를 사용하여 변수를 볼 수 있습니다. – Ryan

+0

eye opener comment .. thanks –

답변

0

나를 게시 한 사람이 나를 좋아할 수도 있습니다.

assign을 사용하여이를 수행했습니다.

//Initially the Object will be empty. 
var ex1 = {  
}; 

//Will watch for variable1 in that Object 
watch(ex1, "variable1", function(){ 
    console.log("Variable1 changed"); 
}); 

//Changing or Adding a variable1 in Object. Now the above watch got triggered. 
var ex2 = { 
    variable1 : "Hai", 
    variable2 : "Hello" 
} 

Object.assign(ex1, ex2); 
+1

'assign'은 당신이 말한 것처럼 새로운 객체를 기존 객체에 할당하지 않습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign "Object.assign() 메서드는 하나 이상의 개체에서 모든 열거 가능 속성의 값을 복사하는 데 사용됩니다 원본 개체를 대상 개체로 보내면 대상 개체가 반환됩니다. " 속성의 값을 복사하는 것은 객체를 복사하는 것과 같지 않습니다. 객체 참조가 복사된다는 것이 일반적인 이해입니다 (원래 질문의 마지막 코드 줄 에서처럼). – Neek

+0

Neek에게 감사드립니다. 답변을 업데이트했습니다. 내 말씨가 틀렸어.하지만 내가 한 일은 옳았 어. 희망. –

+1

예, 전 라이언이 만든 요점을 집으로 몰고 가려고했습니다. 객체와 참조에 대해 명확하게 생각하지 않을 때 쉽게 빠질 수있는 함정입니다. 'ex.variable1 = 'Hai';는'ex = {variable1 : 'Hai'};와 매우 다릅니다. 이해해 주셔서 감사합니다 :) – Neek