В ранее отвеченных вопросах говорилось, что это был самый быстрый способ:
//nl is a NodeList
var arr = Array.prototype.slice.call(nl);
При тестировании в моем браузере я обнаружил, что он более чем в 3 раза медленнее, чем этот:
var arr = [];
for(var i = 0, n; n = nl[i]; ++i) arr.push(n);
Они оба выдают один и тот же результат, но мне трудно поверить, что моя вторая версия - самый быстрый из возможных, тем более, что здесь люди говорят иначе.
Это странная вещь в моем браузере (Chromium 6)?Или есть более быстрый способ?
РЕДАКТИРОВАТЬ: Для тех, кто заботится, я остановился на следующем (который, кажется, самый быстрый в каждом браузере, который я тестировал):
//nl is a NodeList
var l = []; // Will hold the array of Node's
for(var i = 0, ll = nl.length; i != ll; l.push(nl[i++]));
EDIT2: Я нашел еще более быстрый способ
// nl is the nodelist
var arr = [];
for(var i = nl.length; i--; arr.unshift(nl[i]));