Objectadalah Hawa, dan FunctionAdam, Adam ( Function) menggunakan tulangnya ( Function.prototype) untuk membuat Hawa ( Object). Lalu siapa yang menciptakan Adam (Function )? - Penemu bahasa JavaScript :-).
Menurut jawaban utsaina, saya ingin menambahkan info yang lebih berguna.
Hal yang paling mengejutkan bagi saya adalah menemukan Object.__proto__
hal itu Function.prototype, alih-alih Object.prototype, tapi saya yakin ada alasan bagus untuk itu :-)
Seharusnya TIDAK. Object.__proto__seharusnya TIDAK menunjuk ke Object.prototype. Sebaliknya, contoh dari Object o, o.__proto__harus menunjuk keObject.prototype .
(Maafkan saya karena menggunakan ketentuan classdaninstance dalam JavaScript, tetapi Anda tahu itu :-)
Saya pikir kelas Objectitu sendiri adalah contoh dari Function, itu sebabnya Object.__proto__ === Function.prototype. Karena itu: Objectadalah Hawa, dan FunctionAdam, Adam ( Function) menggunakan tulangnya ( Function.prototype) untuk membuat Hawa (Object ).
Lebih jauh, bahkan kelas Functionitu sendiri adalah turunan dari Functiondirinya sendiri, yaituFunction.__proto__ === Function.prototype sebabnyaFunction === Function.constructor
Lebih jauh lagi, kelas reguler Catadalah turunan dari Function, yaitu Cat.__proto__ === Function.prototype.
Alasan di atas adalah, ketika kita membuat kelas dalam JavaScript, sebenarnya, kita hanya membuat fungsi, yang seharusnya menjadi instance dari Function. Objectdan Functionhanya istimewa, tetapi mereka masih kelas, sedangkan Catkelas reguler.
Faktanya, di mesin Google Chrome JavaScript, berikut 4:
Function.prototype
Function.__proto__
Object.__proto__
Cat.__proto__
Mereka semua ===(sama dengan) 3 lainnya, dan nilainyafunction Empty() {}
> Function.prototype
function Empty() {}
> Function.__proto__
function Empty() {}
> Object.__proto__
function Empty() {}
> Cat.__proto__
function Empty() {}
> Function.prototype === Function.__proto__
true
> Function.__proto__ === Object.__proto__
true
> Object.__proto__ === Cat.__proto__
true
BAIK. Lalu siapa yang menciptakan special function Empty() {}( Function.prototype)? Pikirkan tentang itu :-)