Salah faham tentang rantai prototaip Javascript dan kemahiran prototype_javascript

WBOY
Lepaskan: 2016-05-16 16:33:04
asal
1407 orang telah melayarinya

Sebelum ini, saya agak keliru tentang pewarisan prototaip dan carian pengecam dalam rantaian prototaip Javascript,

Contohnya, kod berikut:

Salin kod Kod adalah seperti berikut:

fungsi Foo() {};
var foo = Foo baharu();
Foo.prototype.label = "laruence";
alert(foo.label); //output: larience
alert(Foo.label);//output: undefined

Saya melihat gambar berikut hari ini:

Susun atur objek Javascript
Juga, lihat dalam Hierarki Objek Javascript:

Prototaip hanya digunakan untuk sifat yang diwarisi oleh objek/kejadian yang dicipta oleh fungsi itu sendiri tidak menggunakan prototaip yang berkaitan.

Dalam erti kata lain, prototaip objek fungsi tidak menjejaskan proses carian rantai prototaip,

Saya temui hari ini di bawah firefox (kerana firefox mendedahkan [[prototaip]] melalui __proto__), perkara yang sebenarnya mengambil bahagian dalam carian pengecam ialah __proto__ objek fungsi,

Salin kod Kod adalah seperti berikut:

fungsi Foo() {};
var foo = Foo baharu();
Foo.__proto__.label = "laruence";
alert(Foo.label); //output: larience
alert(foo.label);//output: undefined

Dan, jelas sekali:

Salin kod Kod adalah seperti berikut:

fungsi Foo() {};
alert(Foo.__proto__ === Foo.prototype); //output: false

Selain itu, ia juga menerangkan,

Salin kod Kod adalah seperti berikut:

alert(Object.forEach); // tidak ditentukan

Function.prototype.forEach = fungsi(objek, blok, konteks) {
untuk (kunci var dalam objek) {
Jika (jenis this.prototype[key] == "undefined") {
               block.call(konteks, objek[kunci], kunci, objek);
}
}

};

alert(Object.forEach);
alert(Function.forEach);
alert(Object.forEach === Function.forEach); // true
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!