Подтвердить что ты не робот

Array() против нового Array()

В чем разница (если есть) между

x = Array()

а также

x = new Array()

Какой я должен использовать?

4b9b3361

Ответ 1

spec говорит:

Когда Array вызывается как функция, а не как конструктор, он создает и инициализирует новый объект Array. Таким образом, вызов функции Array(…) эквивалентен выражению создания объекта new Array(…) с теми же аргументами.

Ответ 2

Вы должны использовать литерал []. Причины описаны здесь. Использование конструктора Array() может быть неоднозначным, поскольку оно принимает либо length, либо список элементов:

new Array(5)   // []
new Array('5') // ['5']

[5]   // [5]
['5'] // ['5']

Причина, по которой вы можете использовать Array без оператора new, заключается в том, что внутри он обычно использует трюк с конструкторами:

function Thing(){
    if (!(this instanceof Thing)){
        return new Thing()
    }
    // ... define object
}

То есть, если вы вызываете Thing(), он вызовет new Thing() для вас.

Ответ 3

Я считаю, что оба они эквивалентны. Однако, по крайней мере, в JavaScript вы всегда должны использовать буквенный синтаксис:

x = []

Но на основании некоторых тестов в браузерах, которые у меня есть, Array(1, 2, 3) дает тот же результат, что и new Array(1, 2, 3), и тот же с Array(15) и new Array(15). Или просто new Array().

Ответ 4

var arr = new F ([2,17,8, -5]);

как мне сделать устройство, которое влияет на arr на нем arr.metod();