Ранее ответные вопросы здесь говорили, что это был самый быстрый способ:
//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)? Или есть более быстрый способ?
EDIT: для всех, кто волнуется, я остановился на следующем (что кажется самым быстрым в каждом браузере, который я тестировал):
//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]));