Когда * не * использует новую работу над встроенными модулями? [Дубликат]

На этот вопрос уже есть ответ здесь:

В чем разница между Array (1) и новым Array (1) в JavaScript? 3 ответаЧто такое «новое» ключевое слово в JavaScript? 14 ответов

Играя со встроенными JavaScript-объектами и конструкторами, я заметил кое-что странное.

Иногда можно получить новые объекты, вызвав конструктор безnew, Например:

> new Array(1,2,3,4)
[1, 2, 3, 4]
> Array(1,2,3,4)
[1, 2, 3, 4]

Но иногда это не работает:

> Date()
"Thu Jun 05 2014 00:28:10 GMT-0600 (CST)"
> new Date()
Date 2014-06-05T06:28:10.876Z

Поведение встроенных функций не нового конструктора определено где-либо в спецификации ECMAScript? Обратите внимание, что это поведение действительно полезно; Я могу сделать не разреженную копию массива, вызвавArray.apply(arr), но я чувствовал бы себя комфортно, если бы это было кроссплатформенным.

Ответы на вопрос(2)

Ваш ответ на вопрос