Sebelumnya, saya sedikit bingung tentang prototipe warisan dan pencarian pengidentifikasi dalam rantai prototipe JavaScript.
Misalnya, kode berikut:
Salinan kode adalah sebagai berikut:
function foo () {};
var foo = new foo ();
Foo.prototype.label = "Larience";
peringatan (foo.label); // Output: Larience
Peringatan (foo.label); // output: tidak ditentukan
Hari ini saya melihat gambar berikut:
Tata Letak Objek JavaScript
Juga, lihat dalam hierarki objek JavaScript:
Prototipe hanya digunakan untuk properti yang diwarisi oleh objek/instance yang dibuat oleh fungsi itu. Fungsi itu sendiri tidak menggunakan prototipe yang terkait.
Dengan kata lain, prototipe objek fungsi tidak berfungsi dalam proses pencarian rantai prototipe.
Hari ini saya menemukan di bawah Firefox (karena Firefox mengekspos [[prototipe]] melalui __proto__), orang yang benar -benar berpartisipasi dalam pencarian pengidentifikasi adalah __proto__ dari objek fungsi,
Salinan kode adalah sebagai berikut:
function foo () {};
var foo = new foo ();
Foo .__ proto __. Label = "Larience";
peringatan (foo.label); // Output: Larience
Peringatan (foo.label); // output: tidak ditentukan
Dan, jelas:
Salinan kode adalah sebagai berikut:
function foo () {};
peringatan (foo .__ proto__ === foo.prototype); // Output: Salah
Selain itu, itu juga dijelaskan,
Salinan kode adalah sebagai berikut:
waspada (objek.foreach); // belum diartikan
Function.prototype.foreach = function (objek, blok, konteks) {
untuk (tombol var di objek) {
if (typeof this.prototype [key] == "tidak terdefinisi") {
block.call (konteks, objek [kunci], kunci, objek);
}
}
};
waspada (objek.foreach);
waspada (function.foreach);
peringatan (objek.foreach === Function.foreach); // BENAR