конструкция Array.prototype.slice ...
В одном коде нашел вот такую конструкцию:
var arg = Array.prototype.slice(arguments, 0); разумеется эта конструкция находится внутри функции. я понимаю данные сохраняют в переменную, потому что в нутри этой функции находится еще одна функция и список аргументов надо как то сохранить.. но почему именно таким макаром? почему не написать просто: var arg = arguments;
function a ()
{
console.log(typeof arguments);
//ради прикола узнаем что arguments - это массив...
//я думаю что здесь "особый" массив. ну например, когда пишем document.querySelector то получаем не массив а nodeList...
var arg = arguments;
//var arg = Array.prototype.slice(arguments, 0);
return function ()
{
console.log(arg);
console.log(arguments);
}
}
var b = a(1, 2, 3);
b(44, 55, 66);
или здесь нет никакой разницы, хотят запутать?))) |
Цитата:
|
skrudjmakdak,
Цитата:
|
ага, т.е. той самой волшебной строкой мы получаем обычный массив..
а вот еще пример, уже мой:
var div = document.querySelectorAll('div');
var d = Array.prototype.slice(div, 0);
console.log(d);
d.forEach(funcyion (){/* ... */});
получит пустой массив(( а вот так можно:
Array.prototype.forEach(document.querySelectorAll('div'), funcyion (){/* ... */});
|
Цитата:
|
Цитата:
иными словами, не просто не Массив, но и вообще даже не массив продолжая в том же духе, можно сказать, что инстанс Uint32Array тоже не массив, потому что не принадлежит типу Array :) железная логика а я-то дурак всегда думал, что массив это контейнер элементов с поиндексным доступом теперь будем знать, что массив это то, что принадлежит типу Array </sarcasm> рони, не читайте до обеда советских газет (ц) |
Дзен-трансгуманист,
а какже тогда запись из советской газеты про Цитата:
|
Цитата:
|
|
Цитата:
|
| Часовой пояс GMT +3, время: 21:59. |