Ciri noSuchMethod dalam pelaksanaan JavaScript tertentu, seperti Rhino dan SpiderMonkey , membolehkan pengendalian kaedah yang tidak dilaksanakan. Walau bagaimanapun, ciri serupa tidak tersedia secara asli untuk hartanah.
ECMAScript 6 memperkenalkan Proksi, yang menyediakan mekanisme untuk menyesuaikan operasi asas, termasuk akses harta benda. Dengan memanfaatkan perangkap Proksi, kita boleh meniru gelagat yang diingini untuk carian harta menggunakan __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>
Pertimbangkan contoh berikut:
<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}`); return; }; var instance = new Dummy(); console.log(instance.ownProp1); instance.test(); instance.someName(1, 2); instance.xyz(3, 4); instance.doesNotExist("a", "b");</code>
Kod ini akan log keluaran berikut, menunjukkan emulasi noSuchMethod untuk sifat:
value1 Test called No such method someName called with 1,2 No such method xyz called with 3,4 No such method doesNotExist called with a,b
Atas ialah kandungan terperinci Bagaimana untuk Meniru noSuchMethod Tahap Harta dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!