Rumah  >  Artikel  >  hujung hadapan web  >  Memahami rantaian prototaip javaScript dalam istilah mudah_kemahiran javascript

Memahami rantaian prototaip javaScript dalam istilah mudah_kemahiran javascript

WBOY
WBOYasal
2016-05-16 16:00:041269semak imbas

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();
Proses baharu dibahagikan kepada tiga langkah berikut:

(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);
Kod ini akan kembali benar. Ini menunjukkan bahawa langkah 2 adalah betul.

3. Contoh

var Person = function(){};
Person.prototype.sayName = function() {
  alert("My Name is Jacky");
};
Person.prototype.age = 27;
var p = new Person();
p.sayName();
p ialah objek yang merujuk kepada Orang. Kami mentakrifkan kaedah sayName dan atribut umur pada prototaip Person Apabila kami melaksanakan p.age, kami akan mencari di dalam ini (iaitu, di dalam pembina, kami akan mengesannya kembali di sepanjang prototaip). rantai.

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.

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