Bolehkah Proksi ES6 Meniru Ciri noSuchMethod untuk Hartanah dalam JavaScript?

Linda Hamilton
Lepaskan: 2024-10-18 14:19:03
asal
987 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!