オブジェクトまたは配列にゲッターとセッターを設定する関数があります。 私の問題は、設定された値がオブジェクトである場合、内部的な変更を検出することはできませんが、ゲッターを介してアクセスされると仮定してアクセスされた場合のみです。ゲッターがオブジェクトを返す瞬間、ゲッターを戻した後にアクションを実行したいのですが、それは変更されたかどうかです。現時点ではゲッターから戻った後にアクションを実行する
私のコードは:
set = function(obj, i, val) {
Object.defineProperty(obj, i, {
set(newVal) {
val = newVal
// react to changes
insert(val, i)
},
get() {
return val
//I want this to run after the object was accessed and possibly changed
if (typeof val == "object") {
insert(val, i)
}
},
configurable: true,
enumerable: true
})
}
私はセッターとゲッターは、setTimeoutを、不要な動作を引き起こす可能性が削除され、私はむしろコードが同期残ってしまうしかし場合のsetTimeoutある一つの解決策を考えています。
私が考えている別のアイデアは、すべてのオブジェクトプロパティでセッターとゲッタを定義することですが、これは高価になります。
どうすればこの問題を解決できますか?私はsetTimeoutをある一つの解決策を考えている
* "setterとgetterが削除された場合、setTimeoutは望ましくない動作を引き起こす可能性があります" * Huh? –
オブジェクトをフリーズするか、Immutablejsのようなライブラリを使用することができます。オブジェクトを更新できる唯一の方法は、再度設定することです。 –
これはX/Yの問題のように聞こえる。あなたが解決しようとしている根本的な問題は何ですか? –