Почему Number.prototype a Number

({}).toString.call(Number.prototype) === "[object Number]"

Объект прототипа Number сам является объектом Number (его [[Класс]] является "Число" ), значение которого равно +0.

15.7.4

Почему было бы полезно, чтобы 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.