JavaScript adalah suara yang berorientasi objek, yaitu, semuanya adalah objek.
Jadi bagaimana cara menghasilkan objek? Di dunia Java, objek dibuat oleh instance kelas. Dalam istilah awam, mereka abstrak hal -hal menjadi cetakan dan menggunakan cetakan ini (kelas) untuk menghasilkan objek nyata (objek) tertentu.
Namun, tidak ada konsep kelas di JS. Beberapa adalah "prototipe", dan objek berasal dari prototipe. Dalam istilah awam, di dunia js, "prototipe" bukanlah cetakan, tetapi objek konkret (objek). Semua objek berasal dari objek lain, dan objek yang diturunkan ini adalah apa yang disebut "objek prototipe".
Ada tiga jenis objek dalam JavaScript, 1 objek yang dibuat pengguna, 2 objek konstruktor, 3 objek prototipe
Masing -masing dari ketiga objek ini memiliki atribut -_proto__ properti, yang menunjuk ke prototipe objek, dan dapat ditelusuri kembali ke objek.prototype dari titik di mana objek apa pun mengikutinya.
Konstruktor memiliki objek prototipe, yang menunjuk ke objek prototipe. Ketika objek dibuat melalui konstruktor ini, atribut __proto__ dari objek yang dibuat akan menunjuk ke atribut prototipe konstruktor.
Objek prototipe memiliki properti konstruktor yang menunjuk pada konstruktor yang sesuai.
Bicara itu murah, tunjukkan kodenya! Mari kita lihat kode:
var obj = {}; console.log (obj);Mari kita perluas __proto__ untuk melihat: adalah beberapa metode default.
Anda pasti akan terjadi bahwa ada juga objek __proTo__ dalam objek __proto__ ini. Seperti yang baru saja kami katakan, setiap objek memiliki atribut __proto__ yang menunjuk pada objek prototipe. Mari kita cetak __proto__ di __proto__ ini:
console.log (obj .__ proto __.__ proto__); //-> null
Hasilnya adalah nol, menunjukkan bahwa objek prototipe tingkat atas telah tiba. OBJ didefinisikan dalam kawat gigi {}, dan objek prototipe OBJ secara alami adalah objek tingkat atas JS.
Mari kita lihat kode di satu sisi untuk memperkuat pemahaman kita:
var parent = {name: "Parent"}; var child = {name: "child", __proTo__: Parent}; var subchild = {name: "SubChild", __proTo__: child} console.log (subchild);