2. Pinjam konstruktor
Untuk menyelesaikan masalah yang disebabkan oleh termasuk nilai jenis referensi dalam prototipe, kami menggunakan teknik yang disebut pencurian konstruktor pinjaman (juga disebut objek palsu atau warisan klasik).
Ide dasar teknik ini: Panggil konstruktor supertype di dalam konstruktor subkelas.
Konstruktor dapat dieksekusi pada objek subclass yang baru dibuat dengan menggunakan metode Apply () dan Call ().
fungsi supertype () {this.colors = ["red", "blue", "green"];} function subtipe () {// Diwarisi supertype supertype.Apply (ini);} var instance1 = Subtipe baru (); instance1.colors.push ("hitam"); peringatan (instance1.colors); // merah, biru, hijau, blackvar instance2 = subtipe baru (); waspada (instance2.colors); // merah, biru, hijauDalam contoh di atas, konstruktor supertype sebenarnya disebut dalam lingkungan instance subtipe yang baru dibuat (instance1 instance2). Dengan cara ini, semua kode inisialisasi objek yang ditentukan dalam fungsi supertype () akan dieksekusi pada objek subtipe baru. Jadi setiap contoh subtipe akan memiliki salinannya sendiri dari atribut warna.
Parameter lulus
Untuk rantai prototipe, konstruktor pinjaman memiliki keuntungan besar, yaitu, Anda dapat meneruskan parameter pada konstruktor supertype dalam konstruktor subtipe.
fungsi supertype (name) {this.name = name;} function subtipe () {supertype.call (this, "bob"); this.age = 18;} var instance1 = baru subtipe (); waspada (instance1.age); //18alert(instance1.name); // BobMasalah pinjaman konstruktor:
Semua metode didefinisikan dalam konstruktor, jadi tidak ada cara untuk berbicara tentang fungsi kembali. Selain itu, metode yang didefinisikan dalam prototipe supertype juga tidak terlihat oleh subtipe.
3. Kombinasi warisan
Kombinasi warisan, kadang-kadang disebut pseudo-klasik warisan, mengacu pada menggabungkan rantai prototipe dan meminjam teknik konstruktor bersama-sama. Ini adalah model warisan yang menggunakan kekuatan keduanya.
Gunakan rantai prototipe untuk mengimplementasikan pewarisan properti dan metode prototipe;
Warisan properti instan dicapai dengan meminjam konstruktor.
Dengan cara ini, fungsi fungsional dicapai dengan mendefinisikan metode pada prototipe, dan juga dapat memastikan bahwa setiap contoh memiliki atributnya sendiri.
fungsi supertype (name) {this.name = name; this.colors = ["merah", "biru", "hijau"];} supertype.prototype.sayname = function () {waspada (this.name);} function subtipe (nama, usia) {// atribut warisan supertype.call (ini, nama); this.age = usia;} // metode pewarisan subtipe.prototype = supertype baru (); Subtype.prototype.sayage = function () {alert (this.age);} var instance1 = subtipe baru ("bob", 22); instance1.colors.push ("Black"); alert (instance1.colors); //red,blue,green,blackenstance1.sayname (); //Bobinstance1.sayage (); // 22var instance2 = subtipe baru ("Alice", 21); waspada (instance2.colors); //red,blue.greeninstance2.sayname (); //AliceInstance2.sayage (); // 21Dalam contoh ini, konstruktor supertype mendefinisikan dua properti: nama dan warna. Prototipe supertype mendefinisikan metode yang dikatakan nama ().
Konstruktor subtipe melewati parameter nama saat memanggil konstruktor supertype dan mendefinisikan usia atributnya sendiri. Kemudian tetapkan contoh supertype ke prototipe subtipe. Metode Saidage () didefinisikan pada prototipe ini.
Ini memungkinkan dua contoh subtipe yang berbeda untuk memiliki sifat sendiri - termasuk atribut warna, dan metode yang sama dapat digunakan.
Artikel di atas secara singkat berbicara tentang konstruktor JS Oblitance_Borrow & Kombinasi Warisan adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.