конструкция 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, время: 12:03. |