Лучше ли писать
var arr=[]; then var arr=new Array();
var obj={}; then var obj=new Object();
и если да, то почему?
Я читал слайд-лекция стр. 36 об этой идее, но не было дано объяснений или примеров, почему это лучше.
Лучше ли писать
var arr=[]; then var arr=new Array();
var obj={}; then var obj=new Object();
и если да, то почему?
Я читал слайд-лекция стр. 36 об этой идее, но не было дано объяснений или примеров, почему это лучше.
Между этими определениями нет большой разницы, за исключением того, что первый способ использует литерал массива/объекта, а второй - конструктор массива/объекта.
Конструктор массива может возвращать разные результаты в зависимости от количества переданных аргументов. Если вы передаете один аргумент, создается новый пустой массив длины этого аргумента. Например:
// arr1 is the same as arr2
var arr1 = new Array(1, 2, 3, 4);
var arr2 = [1, 2, 3, 4];
alert(arr1.length == arr2.length); // true
alert(arr1[0]); // 1
alert(arr2[0]); // 1
Но, передавая один аргумент, получается иначе:
// arr3 has length 200 and is empty, while arr4 has length 1 and contains a number
var arr3 = new Array(200);
var arr4 = [200];
alert(arr3.length == arr4.length); // false
alert(arr3[0]); // 'undefined'
alert(arr4[0]); // 200
Самый быстрый способ определить массив или объект - это, конечно, буквальный путь, потому что вам не нужно сначала вызывать конструктор. Во всяком случае, фактическая разница в скорости незначительна, действительно.
Я сделал тест скорости в Chrome 6, в котором я определил 20 раз 10000000 того же массива 1, 2, 3
, который дал следующие результаты:
Average speed per 10000000 calls
Array Constructor : 226.55 ms
Array Literal : 159.1 ms
Как вы можете видеть, литерал массива имеет размер 67,45 мс на 10000000 определений массива.
thomas fuchs говорит в своем слайд-шоу под этим видео (часть, говорящая "обнимать язык" на стр. 20): var arr = [] и var obj = {} лучше и немного быстрее. Я не уверен, почему, но в любом случае это довольно интересное слайд-шоу:)
С точки зрения типичного программиста, кажется, вы склонны использовать var arr = new Array(); чтобы дать ощущение типичного экземпляра объекта. Но в javascript обычно рекомендуется использовать var arr = []; Лично я не вижу большой разницы в использовании обоих способов, кроме одного параметра, который объясняется Harmen.
Также проверьте эту ссылку - http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/