Contoh dalam artikel ini menerangkan rantaian prototaip javaScript. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
Untuk rantaian prototaip JavaScript, saya pernah fikir ia adalah perkara yang sangat mendalam, dan saya tidak pernah memahaminya dengan jelas Selepas membaca beberapa pengenalan hari ini, saya menjumpai gambar ini, yang bermaksud tiada bahasa yang dapat menerangkannya dengan lebih jelas daripada ini gambar.
Selepas melihat gambar ini, saya tiba-tiba mempunyai pemahaman kualitatif tentang javascript.
Terdapat dua jenis rantaian prototaip JavaScript: eksplisit dan tersirat:
Rantai prototaip eksplisit: ialah prototaip biasa kami;
Rantai prototaip tersirat: Ia tidak boleh diakses dalam keadaan biasa, iaitu, ia boleh diakses melalui __proto__ di bawah FireFox rantaian prototaip tersirat digunakan untuk mencari rantai prototaip dalam enjin javascript . , ditetapkan dengan memaparkan rantaian prototaip;
1. Konsep prototaip dan __proto__
Prototaip ialah atribut fungsi (setiap fungsi mempunyai atribut prototaip. Atribut ini ialah penunjuk yang menunjuk ke objek. Ia adalah harta yang memaparkan prototaip objek yang diubah suai.
__proto__ ialah atribut terbina dalam yang dimiliki oleh objek (sila ambil perhatian: prototaip ialah atribut terbina dalam fungsi, dan __proto__ ialah atribut terbina dalam objek. Ia adalah atribut yang digunakan secara dalaman oleh JS untuk mencari rantai prototaip.
Kedua-dua chrome dan FF boleh mengakses atribut __proto__ objek, tetapi IE tidak boleh.
2. Proses baharu
var Person = function(){}; var p = new Person();
(1) var p={}; Dengan kata lain, mulakan objek p
(2) p.__proto__ = Orang.prototaip;
(3) Person.call(p); iaitu membina p, yang juga boleh dipanggil permulaan p
Kuncinya terletak pada langkah kedua, mari kita buktikan:
var Person = function(){}; var p = new Person(); alert(p.__proto__ === Person.prototype);
var Person = function(){}; Person.prototype.sayName = function() { alert("My Name is Jacky"); }; Person.prototype.age = 27; var p = new Person(); p.sayName();
Bagaimanakah jejak balik ke atas di sini berfungsi ke atas? Di sini kita perlu menggunakan atribut __proto__ untuk memaut ke prototaip (iaitu, Person.prototype) untuk carian. Akhirnya menemui atribut umur pada prototaip.
Saya harap artikel ini akan membantu reka bentuk pengaturcaraan JavaScript semua orang.