Почему конструктор может возвращать только объект?

Если есть конструктор вроде

function a() {}

, то

(new a) instanceof a === true

Но, с другой стороны,

function a() { return {} }

приводит к

(new a) instanceof a === false

. Я думал, что

function a() { return 123 }

приведет к тому же результату. Однако при возврате числа

(new a) instanceof a === true

как это возможно? Почему я не могу заставить конструктор возвращать что-то еще, кроме объекта?

(Я знаю, что создание конструктора, возвращающего число, довольно бесполезно, но я хотел бы понять «почему» такого поведения)

5
задан pimvdb 21 July 2011 в 11:46
поделиться