Dalam JavaScript, kita dapat menggunakan prototipe untuk mencapai warisan.
Misalnya
function baz () {this.oo = "";} function foo () {} foo.prototype = new baz (); var myfoo = new foo (); myfoo.oo;Dengan cara ini kita dapat mengakses atribut oo di Baz. Ini tidak dimungkinkan dalam penggunaan aktual, karena karakteristik berbagi dari prototipe (data disimpan pada tumpukan),
Semua contoh menggunakan prototipe, tetapi begitu atribut BAZ memiliki jenis referensi, itu akan menjadi tragis. Jika satu contoh dimodifikasi, contoh lainnya akan berubah juga ... wuwuwu
Secara alami akan ada warisan kombinasi
function baz () {this.oo = "";} baz.prototype.xx = function () {} function foo () {baz.call (ini); // panggilan kedua} foo.prototype = new baz (); // panggilan pertama var myfoo = new foo (); myfoo.OOO.OOO.Ini akan memiliki masalah, dan kode juga menunjukkan bahwa Baz akan dipanggil dua kali. Bagaimana Virgo bisa mengizinkannya?
Jika Anda menambahkan kalimat, akankah metode kedua tidak perlu memiliki masalah dengan metode pertama? Jawabannya adalah tidak.
Alasannya adalah bahwa atribut pencarian dimulai dengan objek itu sendiri. Hanya ketika tidak ditemukan akan ditemukan akan ditemukan dalam prototipe. Saat menelepon, atributnya diwarisi.
Izinkan saya menambahkan kalimat lain, maka tidak akan cukup untuk hanya menggunakan warisan panggilan seperti ini? Ini layak jika Anda tidak menggunakan prototipe, tetapi bagaimana Anda tidak bisa menggunakan prototipe sebagai virgo?
Metode ini dibagikan pada prototipe, sehingga kinerjanya akan jauh lebih baik.
Warisan kombinasi parasit
__extends = function (p, c) {function ctor () {this.constructor = c; // penugasan konstruktor} ctor.prototype = p.prototype; c.prototype = ctore baru ();} function baz () {this.oo = [1];} baz.protype.xx () {this.oo = [1];} baz.protype.xx () {this.oo = [1];} baz.protype.xx = function = {this.oo = [1];} Baz.protype.xx = function = {this.oo = [1];} baz.protype.xx = function = {this foo () {baz.call (this);} var myfoo = new foo (); myfoo.oo; myfoo.xx;Ini tidak hanya memecahkan masalah dua panggilan, tetapi juga memecahkan masalah bahwa ketika objek memanggil konstruktor, fungsi nyata yang membuat objek dipanggil alih -alih konstruktor lain pada rantai prototipe.
Ada pernyataan dalam kode.
Konstruktor adalah atribut pada objek prototipe dan merupakan pencipta objek. Karena atribut prototipe kami dipindahkan, konstruktor diwarisi.
Di sini saya ingin berbicara tentang bagaimana objek dibuat, yaitu, apa yang telah dilakukan baru.
Misalnya:
var a = baru b ();
Sebenarnya, ini seperti ini, a = {}; menciptakan a untuk a, dan kemudian b.call (a); Panggil inisialisasi a. Ada langkah lain sebelum panggilan, yang merupakan objek prototipe internal a.
Objek prototipe tempat properti prototipe diatur ke titik B. Ada atribut konstruktor pada prototipe, yang digunakan untuk membuat kontrol memori alokasi objek.
Mungkin saja ... masih terlambat, mari kita hancurkan. Tetaplah tenang dan jangan bersikap tidak sabar. Bekerja keras untuk berubah besok, dan berharap semuanya secara bertahap akan menjadi lebih baik.
Di atas adalah semua konten yang dibawa editor kepada Anda tentang pemahaman komprehensif tentang warisan (harus dibaca) dalam JavaScript. Saya berharap semua orang akan lebih mendukung jejak kaki.