2017-12-22 11 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

アイオープナーコメント..ありがとう –

答えて

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()メソッドは、すべての列挙可能な独自のプロパティの値を1つまたは複数のソースオブジェクトをターゲットオブジェクトに移動すると、ターゲットオブジェクトが返されます。プロパティの値をコピーすることは、オブジェクトのコピーと同じではありません。オブジェクト参照がコピーされるという共通の理解があります(元の質問の最終コード行のように)。 – Neek

+0

Neekに感謝します。答えを更新しました。私の言い訳は間違っていますが、私がしたことは正しかったです。 –

+1

はい、絶対に、私はライアンが作ったポイントを家に帰りたいと思っていました。オブジェクトや参照について明確に考えていないときは、簡単に取り込むことができます。 'ex.variable1 = 'Hai';'はex = {variable1: 'Hai'};と非常に異なります。わかってくれてありがとう :) – Neek

関連する問題