ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 変数の変更を検出するにはどうすればよいですか?

JavaScript 変数の変更を検出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-18 07:12:10421ブラウズ

How Can I Detect JavaScript Variable Changes?

JavaScript での変数の変更の観察

元の質問:

の値が変化したときにトリガーされる JavaScript のイベントはありますか?特定の変数が変更されましたか? jQuery を使用したソリューションを検討してください。

回答:

プロキシ オブジェクトの使用:

2018 年現在、Proxy オブジェクトは以下を提供します。オブジェクトのプロパティの変更を監視および傍受するための効果的なメカニズム。これは、ターゲット オブジェクトをラップするプロキシ オブジェクトを作成することで機能します。

var targetObj = {};
var targetProxy = new Proxy(targetObj, {
  set: function (target, key, value) {
      console.log(`${key} set to ${value}`);
      target[key] = value;
      return true;
  }
});

targetProxy.hello_world = "test"; // console: 'hello_world set to test'

制限事項:

  • プロキシ オブジェクトは、古いブラウザではサポートされていません (例: IE11).
  • 特殊なオブジェクト (例:日付).

ネストされたオブジェクトの観察:

ネストされたオブジェクトの変更を観察するには、Observable Slim のような特殊なライブラリがより包括的なソリューションを提供します。

var test = {testing:{}};
var p = ObservableSlim.create(test, true, function(changes) {
    console.log(JSON.stringify(changes));
});

p.testing.blah = 42; // console:  [{"type":"add","target":{"blah":42},"property":"blah","newValue":42,"currentPath":"testing.blah",jsonPointer:"/testing/blah","proxy":{"blah":42}}]

以上がJavaScript 変数の変更を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。