Rumah  >  Artikel  >  hujung hadapan web  >  Bolehkah Proksi ES6 Meniru Ciri noSuchMethod untuk Hartanah dalam JavaScript?

Bolehkah Proksi ES6 Meniru Ciri noSuchMethod untuk Hartanah dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-10-18 14:19:031100semak imbas

Can ES6 Proxies Emulate the noSuchMethod Feature for Properties in JavaScript?

Meniru noSuchMethod untuk Sifat dalam JavaScript dengan Proksi ES6

Ciri noSuchMethod membenarkan untuk melaksanakan tingkah laku tersuai apabila mengakses kaedah yang tidak wujud dalam pelaksanaan JavaScript tertentu. Kefungsian yang serupa boleh dicapai untuk sifat menggunakan proksi ES6.

Menggunakan Proksi ES6

Objek proksi menawarkan gelagat tersuai untuk operasi asas seperti carian harta benda. Dengan menetapkan perangkap pada akses harta benda, tingkah laku noSuchMethod boleh dicontohi:

<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>

Penggunaan

Contohnya:

<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); // value1
instance.test(); // Test called
instance.someName(1, 2); // No such method someName called with [1, 2]
instance.xyz(3, 4); // No such method xyz called with [3, 4]
instance.doesNotExist("a", "b"); // No such method doesNotExist called with ["a", "b"]</code>

Contoh ini menggambarkan bahawa proksi memintas akses harta dan, sekiranya tidak wujud, mewakilkan kepada pelaksanaan noSuchMethod, membolehkan gelagat tersuai untuk sifat yang belum ditakrifkan secara eksplisit.

Atas ialah kandungan terperinci Bolehkah Proksi ES6 Meniru Ciri noSuchMethod untuk Hartanah dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn