Итак, я рассматриваю спецификацию ES5 при определении того, что делают new Object
и Object
. К моему удивлению,
-
new Object
описывает целый алгоритм работы конструктора объектов - обработку того, что происходит с разными типами значений. В основном вызываетToObject
для не-объектов - идентификация объектов и строит на null и undefined. -
Object
имеет специальный первый шаг для null и undefined, где он создает объект, а затем вызываетToObject
для примитивов и идентификаторов объектов.
Прочитав описание несколько раз - они кажутся одинаковыми. Однако, очевидно, из спецификации они делают что-то другое. Например, в Array
- вызов new Array
указан как вызов функции Array(…)
эквивалентен выражению создания объекта new Array(…)
с теми же аргументами.
Итак - какая разница между new Object
и Object
? Почему они были заданы по-разному?
Для удобства - здесь ссылка на спецификацию.