JavaScript の noSuchMethod 機能を使用すると、存在しないメソッドへの呼び出しをインターセプトできます。しかし、プロパティにも同様のメカニズムはありますか?
ES6 Proxies は、プロパティ アクセスをカスタマイズする機能を提供します。これを利用して、プロパティの __noSuchMethod__ のような動作をエミュレートできます。
<code class="javascript">function enableNoSuchMethod(obj) { return new Proxy(obj, { get(target, p) { if (p in target) { return target[p]; } else if (typeof target.__noSuchMethod__ == "function") { return function(...args) { return target.__noSuchMethod__.call(target, p, args); }; } } }); }</code>
これは、プロキシを使用して、未知のプロパティを処理できる「ダミー」クラスを実装する例です。 :
<code class="javascript">function Dummy() { this.ownProp1 = "value1"; return enableNoSuchMethod(this); } Dummy.prototype.test = function() { console.log("Test called"); }; Dummy.prototype.__noSuchMethod__ = function(name, args) { console.log(`No such method ${name} called with ${args}`); }; var instance = new Dummy(); console.log(instance.ownProp1); instance.test(); instance.someName(1, 2); instance.xyz(3, 4); instance.doesNotExist("a", "b");</code>
以上がJavaScript でプロキシを使用してプロパティにそのようなメソッドの動作を実装しない方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。