Rekomendasi terkait: Tutorial JavaScript
(Konsep) Rantai prototipe mengacu pada daftar tertaut yang terdiri dari beberapa prototipe melalui pointer __proto__. Rantai prototipe dapat melayani objek yang ingin berbagi data dalam rantai prototipe dan digunakan untuk mengimplementasikan mekanisme pewarisan JavaScript.
(Penunjuk rantai prototipe) Penunjuk yang terlibat dalam rantai prototipe:
fungsi A() { } misalkan a1 = baru A() misalkan a2 = baru A() misalkan a3 = A baru() // Baris kode ini akan menghasilkan rantai prototipe seperti di bawah ini
let A = { tes: "" } misalkan a1 = Objek.buat(A) misalkan a2 = Objek.buat(A) misalkan a3 = Objek.buat(A) // Baris kode ini sesuai dengan rantai prototipe yang ditunjukkan di bawah
fungsi A() { } misalkan a1 = baru A() misalkan a2 = baru A() misalkan a3 = A baru() // Baris kode ini akan menghasilkan rantai prototipe seperti di bawah ini
Rantai prototipe yang melibatkan pewarisan bisa dianalisis menggunakan diagram yang disederhanakan
// Gunakan mode kombinasi parasit untuk mengimplementasikan fungsi yang diwarisi C() {} fungsi B() {} B.prototipe = C baru() fungsi A() {} A.prototipe = baru B() misalkan a1 = baru A() misalkan a2 = baru A() misalkan a3 = A baru()
rantai prototipe Titik akhir rantai prototipe adalah nol, yang tidak mengacu pada objek prototipe
Dinamika prototipe dijelaskan secara rinci dalam "Pemrograman Berorientasi Objek", dan ini terutama melibatkan penulisan ulang dan modifikasi prototipe. Berikut beberapa contohnya.
Contoh 1—Prototipe Dinamika
var A = function() {}; A.prototipe.n = 1; var b = baru A(); A.prototipe = { n: 2, m: 3 } var c = baru A(); konsol.log(bn); // 1 konsol.log(bm); // tidak terdefinisi konsol.log(cn); // 2 console.log(cm); // 3
Contoh 2 - Dinamika prototipe & rantai prototipe rantai bawah
var F = function() {}; Objek.prototipe.a = function() { konsol.log('a'); }; Fungsi.prototipe.b = fungsi() { konsol.log('b'); } var f = F baru(); fa(); //sebuah fb(); // Atribut b tidak ada Fa(); // a Fb(); //
bMengacu pada gambar pertama pada "Diagram Rantai Prototipe Tidak Melibatkan Warisan" yang disebutkan di atas, Anda dapat menggambar masalah analisis diagram referensi yang disederhanakan berikut ini.
Contoh 3—Dinamika Prototipe & Rantai Prototipe
Fungsi Rantai Bawah Orang(nama) { ini.nama = nama } misalkan p = Orang baru('Tom'); console.log(p.__proto__) // Orang.prototipe console.log(Person.__proto__) // Function.prototype
Contoh 4—Dinamika Prototipe & Rantai Prototipe Rantai Bawah
var foo = {}, F = function(){}; Objek.prototipe.a = 'nilai a'; Function.prototype.b = 'nilai b'; Objek.prototipe = { a: "nilai a" } Fungsi.prototipe = { b: "nilai b" } konsol.log(foo.a); // nilai a console.log(foo.b); // tidak terdefinisi konsol.log(Fa); // nilai a console.log(Fb); // nilai b
mengacu pada gambar pertama dalam "Diagram Rantai Prototipe Tidak Melibatkan Warisan" yang disebutkan di atas untuk menggambar masalah analisis diagram referensi yang disederhanakan berikut ini. Karena foo dan F mengikat prototipenya ketika dideklarasikan, mereka memperoleh alamat prototipe yang disimpan di memori heap melalui penunjuk yang disimpan di memori tumpukan. Pertama, prototipe dimodifikasi. Operasi modifikasi akan memodifikasi prototipe pada memori heap. foo dan F masih dapat mengakses hasil modifikasi melalui pointer memori tumpukan. Langkah kedua adalah menulis ulang prototipe. JS adalah semua "operasi transfer nilai". Setelah menulis ulang prototipe, pertama-tama buka ruang baru di memori heap untuk menyimpan prototipe baru, lalu buka ruang baru di memori tumpukan. untuk menyimpan penunjuk ke memori tumpukan. Saat ini, karena penunjuk memori tumpukan yang dipegang oleh foo dan F berbeda dengan penunjuk memori tumpukan baru, foo dan F tidak dapat mengakses prototipe yang ditulis ulang.
Rekomendasi terkait: Tutorial pembelajaran JavaScript.
Di atas adalah penjelasan rinci tentang rantai prototipe JavaScript dengan gambar dan teks. Untuk informasi lebih lanjut, harap perhatikan artikel terkait lainnya di situs web PHP Cina!