Rumah >hujung hadapan web >tutorial js >Pengenalan kepada prototaip rantaian prototaip dalam kemahiran JavaScript_javascript

Pengenalan kepada prototaip rantaian prototaip dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:23:041477semak imbas

Warisan dalam JavaScript dicapai melalui rantaian prototaip: setiap objek mempunyai objek lain di dalamnya sebagai prototaipnya dan objek itu mewarisi sifat daripada prototaip ini. Untuk setiap objek, anda boleh mengakses objek prototaipnya dalam tiga cara berikut:

1.__proto__. Objek prototaip objek boleh diakses melalui atribut __proto__nya. Sifat ini hanya disokong dalam Firefox, Safari dan Chrome, bukan IE dan Opera.

2.Object.getPrototypeOf(). Anda boleh menghantar objek sebagai parameter ke dalam kaedah Object.getPrototypeOf() dan objek prototaip objek akan dikembalikan selepas pelaksanaan. Kaedah ini hanya disokong dalam standard ECMAScript 5.

3.o.pembina.prototaip. Akses objek prototaip dengan mula-mula mendapatkan fungsi pembina objek, dan kemudian mengakses sifat prototaip fungsi pembina. Prasyarat untuk menggunakan kaedah ini ialah terdapat atribut pembina yang menunjuk kepada pembina dalam objek.

Untuk menentukan sama ada terdapat hubungan rantai prototaip antara dua objek, anda boleh menggunakan kaedah isPrototype():


Salin kod Kod adalah seperti berikut:

var p = {x:1};
var o = Object.create(p);
console.log(p.isPrototypeOf(o));//true


Untuk semua objek yang dibuat dengan literal, objek prototaipnya ialah Object.prototype (sebagai objek khas, Object.prototype tidak mempunyai objek prototaip):


Salin kod Kod adalah seperti berikut:

var x = {a:18, b:28};
console.log(x.__proto__);//Objek {}


Untuk semua objek yang dibuat dengan operator baharu, objek prototaip mereka ialah atribut prototaip bagi fungsi pembina:


Salin kod Kod adalah seperti berikut:

var x = {a:18, b:28};
fungsi Ujian(c){
ini.c = c;
}
Test.prototype = x;
var t = Ujian baharu(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 baharu untuk mencipta objek dalam JavaScript adalah seperti berikut:

1. Cipta objek kosong baharu.
2. Halakan atribut __proto__ objek ini kepada atribut prototaip fungsi pembina.
3. Gunakan objek ini sebagai parameter ini untuk melaksanakan fungsi pembina.

Daripada proses penciptaan di atas, dapat disimpulkan bahawa semua objek yang dibina daripada fungsi pembina yang sama mempunyai atribut __proto__ mereka (iaitu, objek prototaip mereka) yang sama, iaitu, hanya terdapat satu objek prototaip:


Salin kod Kod adalah seperti berikut:

var t = Ujian baharu(38);
var t2 = Ujian baharu(68);
console.log(t === t2);//false
console.log(t.__proto__ === t2.__proto__);//true

Kenyataan:
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