Apa perbedaan antara "__proto__" dan "prototipe"?


Jawaban 1:

tidak

  • __proto__ adalah prototipe yang sebenarnya, tetapi jangan menggunakannya..constructor.prototype seharusnya melakukan hal yang sama dengan __proto__ tetapi sebagian besar rusak. Fungsi .prototype sebenarnya adalah prototipe dari barang-barang yang dibuat olehnya, bukan prototipe-nya.

prototipe

.__ proto__

__proto__

__proto__

sebenarnya

baru

.protype

Function.prototype

__proto__

.constructor.prototype

.constructor

Object.isPrototypeOf

Object.getPrototypeOf


Jawaban 2:

Pemrograman objek dalam JavaScript dikatakan “berbasis prototipe”

Untuk mendefinisikan API yang diwariskan Anda membuat objek prototipe dengan metode dan berpotensi beberapa properti nilai default.

Semua instance `Function` (fungsi adalah objek dalam JavaScript) memiliki properti` prototype` kosong yang dapat diperpanjang atau diganti. Jika fungsi ini disebut sebagai konstruktor dengan operator `baru`, properti` prototipe` ini akan menjadi properti internal `[Prototipe]` dari instance, dari mana akan dicari API warisan mereka

Prototipe ini juga dapat didefinisikan sebagai objek baru dan disuntikkan secara manual:

  • pada objek yang ada melalui Object.setPrototypeOf (), digunakan tanpa fungsi konstruktor melalui Object.create (), menimpa properti prototipe fungsi default melalui pengaruh literal, Object.assign (), atau Object.defineProperty ()

Untuk waktu yang lama [Prototipe] internal suatu objek tidak dapat diakses secara resmi untuk inspeksi atau modifikasi. Salah satu cara untuk melakukannya adalah dengan memeriksa properti `constructor` yang diwarisi dari objek, tetapi bisa dengan mudah diganti sendiri.

Mozilla kemudian memperkenalkan pembantu __proto__ tidak resmi.

Kemudian TC39 (kelompok kerja ECMAScript) mendefinisikan setPrototypeOf () / getPrototypeOf () API resmi.

Kemudian lagi TC39, memvalidasi API __proto__