Warisan dalam JavaScript dilakukan melalui rantai prototipe: setiap objek memiliki objek lain sebagai prototipe, dan objek mewarisi properti dari prototipe ini. Untuk setiap objek, ada tiga cara untuk mengakses objek prototipe:
1 .__ Proto__. Objek prototipe objek dapat diakses melalui atribut __proTo__ -nya. Properti ini hanya didukung di Firefox, Safari, dan Chrome, dan bukan di IE dan Opera.
2.Object.getPrototypeOf (). Anda dapat meneruskan objek sebagai parameter ke dalam metode Object.getPrototypeOf (), dan setelah eksekusi, ia mengembalikan objek prototipe objek. Metode ini hanya didukung dalam standar ecmascript 5.
3.o.constructor.prototype. Pertama dapatkan fungsi konstruktor objek, dan kemudian mengakses objek prototipe dengan mengakses properti prototipe dari fungsi konstruktor. Prasyarat untuk menggunakan metode ini adalah bahwa ada atribut konstruktor yang menunjuk pada konstruktor dalam objek.
Untuk menentukan apakah ada hubungan rantai prototipe antara dua objek, Anda dapat menggunakan metode isPrototype ():
Salinan kode adalah sebagai berikut:
var p = {x: 1};
var o = objek.create (p);
console.log (p.isprototypeof (o)); // true
Untuk semua objek yang dibuat dengan literal, objek prototipe mereka adalah Object.prototype (sebagai objek khusus, Object.Prototype tidak memiliki objek prototipe):
Salinan kode adalah sebagai berikut:
var x = {a: 18, b: 28};
console.log (x .__ proto __); // objek {}
Untuk semua objek yang dibuat dengan operator baru, objek prototipe mereka adalah sifat prototipe dari fungsi konstruktor:
Salinan kode adalah sebagai berikut:
var x = {a: 18, b: 28};
tes fungsi (c) {
this.c = c;
}
Test.prototype = x;
var t = tes baru (38);
console.log (t); // objek {c = 38, a = 18, b = 28}
console.log (t .__ proto __); // objek {a = 18, b = 28}
console.log (t .__ proto __.__ proto __); // objek {}
Proses menggunakan operator baru untuk membuat objek di JavaScript adalah sebagai berikut:
1. Buat objek kosong baru.
2. Tunjuk atribut __proto__ dari objek ini ke atribut prototipe fungsi konstruktor.
3. Gunakan objek ini sebagai parameter ini dan jalankan fungsi konstruktor.
Dari proses pembuatan di atas, kita dapat menarik kesimpulan bahwa semua objek yang dibangun dari fungsi konstruktor yang sama memiliki atribut __proto__ (yaitu, objek prototipe) sama, yaitu, hanya ada satu objek prototipe:
Salinan kode adalah sebagai berikut:
var t = tes baru (38);
var t2 = tes baru (68);
console.log (t === t2); // false
console.log (t .__ proto__ === t2 .__ proto __); // true