Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is Array.prototype also an Array?

I thought every prototype should be an object.

Why?

console.log(Array.isArray(Array.prototype)); // true

developer.mozilla.org explains nothing.

like image 478
Vladimir Starkov Avatar asked Oct 17 '25 18:10

Vladimir Starkov


1 Answers

Your assumption that every prototype is an Object is not correct.

console.log(String.prototype)
console.log(Number.prototype)
console.log(Boolean.prototype)
console.log(Array.prototype)
console.log(Object.prototype)

Output:

String {}
Number {}
Boolean {}
[]
Object {}

From the ECMAScript Language Specification - 15.4.4 Properties of the Array Prototype Object (emphasis mine)

The value of the [[Prototype]] internal property of the Array prototype object is the standard built-in Object prototype object (15.2.4).

The Array prototype object is itself an array; its [[Class]] is "Array", and it has a length property (whose initial value is +0) and the special [[DefineOwnProperty]] internal method described in 15.4.5.1.

like image 58
user247702 Avatar answered Oct 20 '25 07:10

user247702