cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Masalah rantaian prototaip Objek dan Fungsi

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

仅有的幸福仅有的幸福2831 hari yang lalu562

membalas semua(1)saya akan balas

  • 滿天的星座

    滿天的星座2017-05-19 10:13:54

    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

    balas
    0
  • Batalbalas