Properti dan metode yang dapat diakses oleh semua contoh yang dapat diakses dalam JavaScript dalam JavaScript. bagian dari pengetahuan.
Definisi tipe dasar adalah sebagai berikut:
Salin kode kode sebagai berikut:
function person () {}
Person.prototype = {
Konstruktor: Orang,
Nama: "Orang",
Umur: 100,
Teman: [a "," b "] ,,
getName: function () {
Kembalikan nama ini;
}
};
Tentukan contoh dua orang, ubah properti nama dalam instance (atribut didefinisikan dalam prototipe), kode uji adalah sebagai berikut
Salin kode kode sebagai berikut:
var p1 = orang baru ();
var p2 = orang baru ();
Document.write (p1.name+"<br/>");
Document.write (p2.name+"<br/>");
p1.name = "p1";
Document.write (p1.name+"<br/>");
Document.write (p2.name+"<br/>");
Document.write (p1.hasownproperty ("name")+"<br/>");
Document.write (p2.hasownproperty ("name")+"<br/>");
document.write (objek.keys (p1)+"<br/>");
document.write (objek.keys (p2)+"<br/>");
document.write (objek.get.getOwnPropertynames (person.prototype)+"<br/>");
document.write (person.prototype.name+"<br/>");
Setelah pengujian, dapat ditemukan bahwa p1.name = "P1" tidak memodifikasi nilai nama, tetapi tambahkan atribut nama ke namepe dalam instance P1. Objek yang terakhir.keys (P1) juga dapat melihat bahwa ada atribut nama tambahan dalam instance P1 tanpa P2. Semua transmisi dalam JS adalah transmisi nilai. Kode untuk menggambarkan masalah ini.
Salin kode kode sebagai berikut:
var obj = objek baru ();
obj.name = "obj";
function changeobj (o) {
o.name = "diubah";
o = objek baru ();
o.name = "newoBj";
}
Changeobj (OBJ);
Document.write (obj.name);
Dalam metode yang diubah, O = objek baru () tidak memodifikasi nilai parameter o, tetapi memotong hubungan referensi asli, sehingga hasilnya bukan newoBj tetapi diubah, tetapi diubah
Tes berikutnya untuk memodifikasi atribut teman dalam prototipe dalam contoh pertama.
Salin kode kode sebagai berikut:
p1.friends.push ("c");
Document.write (P1.Friends+"<br/>");
document.write (p2.friends+"<br/>");
p1.friends = ["x", "y", "z"];
Document.write (P1.Friends+"<br/>");
document.write (p2.friends+"<br/>");
Document.write (p1.hasownproperty ("friends")+"<br/>");
Document.write (p2.hasownproperty ("friends")+"<br/>");
document.write (objek.keys (p1)+"<br/>");
document.write (objek.keys (p2)+"<br/>");
document.write (objek.get.getOwnPropertynames (person.prototype)+"<br/>");
document.write (person.prototype.friends+"<br/>");
Hasil tes pada dasarnya sama dengan tes pertama. Ketika angka yang sama dimodifikasi, pada saat ini, kutipan asli akan terputus dan membuat atribut baru untuk instance dan mencakup atribut dari nama yang sama dalam prototipe.
Berdasarkan dua hasil tes ini, ditemukan bahwa atribut tipe nilai dalam prototipe tidak dapat dimodifikasi secara langsung dalam instance (tentu saja, tipe nilai ini tidak boleh didefinisikan dalam prototipe.