Rumah > hujung hadapan web > tutorial js > Bagaimanakah Kata Kunci `baru` Memberi Impak kepada Warisan Berasaskan Prototaip dalam JavaScript?

Bagaimanakah Kata Kunci `baru` Memberi Impak kepada Warisan Berasaskan Prototaip dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-14 15:34:22
asal
879 orang telah melayarinya

How Does the `new` Keyword Impact Prototype-Based Inheritance in JavaScript?

Warisan Berasaskan Prototaip: Menyelidiki Peranan Kata Kunci 'baharu'

Apabila melanjutkan kelas Widget dengan fungsi baharu bernama WeatherWidget, tugasan prototaip:

WeatherWidget.prototype = new Widget;
Salin selepas log masuk

memainkan peranan yang penting. Kata kunci 'baharu' memanggil pembina Widget dan memberikan nilai pulangannya kepada sifat prototaip WeatherWidget.

Jika diabaikan, tindakan ini akan menimbulkan ralat atau mungkin mencemarkan ruang nama global. Dengan menggunakan 'baharu', pembina Widget digunakan, memastikan permulaan yang betul dan nilai pulangan yang sah.

Walau bagaimanapun, pendekatan ini mencipta senario di mana semua tika WeatherWidget mewarisi sifat daripada tika Widget yang sama, berkongsi nilai antara mereka sendiri . Ini mungkin tidak sejajar dengan prinsip warisan.

Untuk membetulkan isu ini dan melaksanakan warisan berasaskan kelas sebenar, langkah berikut perlu diambil:

  1. Buat Dummy Objek:
function Dummy () {}
Dummy.prototype = Widget.prototype;
Salin selepas log masuk
  1. Tetapkan Prototaip:
WeatherWidget.prototype = new Dummy();
Salin selepas log masuk
  1. Betulkan Pembina:
WeatherWidget.prototype.constructor = WeatherWidget;
Salin selepas log masuk

Pendekatan ini memastikan kejadian WeatherWidget mewarisi sifat melalui rantaian prototaip tanpa berkongsi nilai sesama mereka.

Untuk penyelesaian yang lebih ringkas dalam ECMAScript Ed. 5 dan kemudian, pertimbangkan untuk menggunakan:

WeatherWidget.prototype = Object.create(Widget.prototype, {
  constructor: {value: WeatherWidget}
});
Salin selepas log masuk

Sebagai alternatif, untuk pelaksanaan pewarisan umum, terokai Function.prototype.extend(). Kaedah ini membolehkan penambahan prototaip mudah dan menyediakan fungsi akses 'super' yang mudah untuk menggunakan kaedah induk.

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `baru` Memberi Impak kepada Warisan Berasaskan Prototaip dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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