Почему Number.prototype a Number
({}).toString.call(Number.prototype) === "[object Number]"
Объект прототипа Number сам является объектом Number (его [[Класс]] является "Число" ), значение которого равно +0.
Почему было бы полезно, чтобы Number.prototype
был числом? (то же самое относится к любому другому встроенному прототипу, у которого [[Class]] установлен не Object)
Я выбираю Number.prototype
специально, потому что могу представить разумные причины для Array.prototype
и Date.prototype
.
Ответы
Ответ 1
В общем случае Constructor.prototype
является примером "типа", определенного Constructor
. Несмотря на то, что вещи кажутся волосатыми для неизменяемых примитивов, и особенно после того, как вы задействуете материал для бокса, эта иллюстративная концепция по-прежнему имеет смысл, при этом 0
является "образцом" Number
.
Ответ 2
Объект прототипа Number сам является объектом Number (его [[Класс]] является "Число" ), значение которого равно +0
Почему Number.prototype
не был бы объектом Number? Его [[Prototype]]
- Object.prototype, поэтому он все еще наследуется от Object.