javascript - Masalah rantaian prototaip Objek dan Fungsi
仅有的幸福
仅有的幸福 2017-05-19 10:11:54
0
1
525

Di atas adalah ujian saya dalam penyemak imbas. Saya tidak dapat memahami rantaian prototaip ini. Siapa boleh tolong terangkan

仅有的幸福
仅有的幸福

membalas semua(1)
滿天的星座

Objek ialah fungsi, jangan terpedaya dengan namanya, jadi lengkapkan borang dalam fikiran anda dahulu

function Object () {
  ...
}

Mana-mana fungsi (pembina) mempunyai prototaip, iaitu prototaip Tiada apa yang istimewa tentang prototaip, ia hanyalah objek.

Object.prototype mengeluarkan "Objek { ... }", jangan terpedaya dengan output ini dan fikir bahawa Object.prototype adalah dirinya sendiri. "Objek" dalam output hanya bermaksud bahawa nilai Object.prototype "adalah objek jenis "Objek".

Tetapi pada masa yang sama, kerana fungsi itu sendiri dalam JS juga merupakan objek, Objek bukan sahaja fungsi, tetapi juga objek. Semua objek "dibina" (dimulakan) berdasarkan prototaip.

Bilakah Objek dibina sebagai objek?

J: Apabila ditakrifkan, iaitu:

function Object() {
  ...
}

Pada masa ini, masa jalan JS membina fungsi "objek" (contoh) Objek berdasarkan fungsi () { [Kod asli] } sebagai prototaip.

Apakah fungsi ini () { [Kod asli] }? Ia adalah nenek moyang semua fungsi dalam JS.

Objek.__proto__.__proto__ ialah prototaip fungsi moyang ini Memandangkan ia adalah moyang, bagaimana ia boleh mempunyai prototaip? Ingat bahawa ia adalah nenek moyang fungsi, tetapi ia bukan nenek moyang "objek". Nenek moyang objek ialah "Objek {__defineGetter__: ...}".

Anda bertanya lagi, memandangkan objek dibina, maka objek nenek moyang juga harus dibina, bukan? Objek nenek moyang adalah asal semua perkara Ia ditakrifkan oleh pereka bahasa JS dan merupakan titik permulaan sistem konsep.

Tetapi saya nampak

Object.prototype.constructor
function Object() { [native code] }

Objek nenek moyang tidak dibina dengan jelas? Dan ia dibina daripada Object?

Ini hanya kerana pereka bahasa JS menunjuk pembina objek nenek moyang kepada Object demi ketekalan konsep.

Apakah objek moyang sebelum ini?

Object.prototype.__proto__
null

Tao melahirkan seorang, dan melahirkan dua.
Tao adalah ketiadaan.

itlr.cc

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan