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;
Kata kunci 'baharu' mempunyai dua tujuan:
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} });
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!