Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

В чём разница между Array и new Array?

#javascript


Подскажите, в чем разница между кодом var a = Array(10) и var a = new Array(10),
и почему оба варианта работают одинаково?
    


Ответы

Ответ 1



new создаёт новый объект (инстанс класса) и передаёт его вызываемой функции в качестве this. Но некоторые функции умеют сами определять, что их вызвали без new и всё равно отрабатывать как конструктор. Array - одна из них, поэтому разницы нет. Если хочется самому создать подобный конструктор, то вот один из способов: function Smth(val) { if (!(this instanceof Smth)) { return new Smth(val); } this.val = val; }

Ответ 2



Для данного случая разницы нет, как я понимаю. Вообще, new - вызывает конструктор указанного объекта. Потому, при создании экземпляров объектов (а вы это и делаете) надо его использовать. Подробности здесь, здесь, и здесь. Задавай вы значение литералом (например, var a = []), вызов конструктора был бы не нужен, но это не значит, что он не сработал бы.

Комментариев нет:

Отправить комментарий