Rumah > hujung hadapan web > tutorial js > Mengapa Menggunakan `baru` dalam `Derived.prototype = New Base` untuk Warisan JavaScript?

Mengapa Menggunakan `baru` dalam `Derived.prototype = New Base` untuk Warisan JavaScript?

Patricia Arquette
Lepaskan: 2024-12-21 04:27:10
asal
259 orang telah melayarinya

Why Use `new` in `Derived.prototype = new Base` for JavaScript Inheritance?

Mengapa Gunakan Kata Kunci 'baru' dalam Derived.prototype = new Base?

Dalam JavaScript, pewarisan dicapai melalui prototaip. Untuk melanjutkan kelas sedia ada, anda boleh menetapkan prototaip kelas anak kepada contoh baharu kelas induk. Di sinilah kata kunci 'baharu' dimainkan.

Dalam kod berikut:

WeatherWidget.prototype = new Widget;
Salin selepas log masuk

Kata kunci 'baharu' mempunyai dua tujuan:

  • Memanfaatkan Fungsi Pembina: Ia mencipta tika baharu kelas Widget. Kejadian ini menjadi prototaip untuk kelas WeatherWidget.
  • Menetapkan Harta Prototaip: Nilai pulangan panggilan pembina (iaitu, tika baharu Widget) diberikan kepada sifat prototaip bagi kelas WeatherWidget.

Apa Berlaku jika 'baru' Ditinggalkan?

Tanpa 'baharu', anda tidak akan memanggil pembina Widget. Sebaliknya, anda perlu menyediakan senarai hujah untuk Widget(). Walau bagaimanapun, ini mungkin tidak dapat dilakukan dan boleh menyebabkan ralat.

Kepentingan Tidak Berkongsi Sifat

Secara lalai, kejadian WeatherWidget akan berkongsi nilai harta daripada tika yang sama daripada Widget. Ini boleh membawa kepada tingkah laku yang tidak dijangka, kerana berbilang kejadian WeatherWidget boleh mengatasi atau mengubah suai sifat masing-masing.

Untuk mengelakkan perkara ini, disyorkan untuk menggunakan pembina "Dummy" (cth., Dummy.prototype = Widget.prototype) sebagai langkah perantaraan, yang mencipta prototaip baharu untuk WeatherWidget yang tidak mewarisi nilai harta daripada tika induk. Ini memastikan bahawa setiap tika WeatherWidget mempunyai set sifat warisannya sendiri.

Pendekatan Alternatif dalam Versi JavaScript Lebih Baharu

Dalam ECMAScript 5 dan lebih baru, anda boleh menggunakan:

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

Pendekatan ini mempunyai faedah tambahan untuk menjadikan sifat pembina tidak boleh ditulis, boleh dikira atau boleh dikonfigurasikan.

Seruan Eksplisit Pembina Induk

Anda mungkin perlu memanggil pembina induk secara eksplisit (cth., Widget.apply(this, arguments)) dalam pembina kanak-kanak untuk memulakan induk instance.

Kesimpulan

Memahami penggunaan 'baru' dalam Derived.prototype = Pangkalan baru adalah penting untuk melaksanakan warisan dengan betul dalam JavaScript. Ia memastikan bahawa kelas kanak-kanak mewarisi daripada prototaip yang betul dan menghalang perkongsian nilai harta yang tidak diingini antara kejadian.

Atas ialah kandungan terperinci Mengapa Menggunakan `baru` dalam `Derived.prototype = New Base` untuk Warisan 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