Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.01.2013, 06:17
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Что делает Array.prototype.slice.apply?
Array.prototype.slice.apply(document.querySelector All(tag))
Я так понимаю, что она преобразует в массив объект, но никак не пойму как это происходит? Подскажите, пожалуйста.
Возможно будет неплохим примером аналоге без использования Array.prototype, а также хотелось бы получить какие-нибудь примеры с использованием других функций Array.prototype, с небольшим объяснением.
Буду крайне признателен за ответ.
Ответить с цитированием
  #2 (permalink)  
Старый 13.01.2013, 20:14
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Большое спасибо за ответ.
Про TypedArray я честно говоря не понял.

То, что такая конструкция переводит объект в массив я понял, но не понял, почему. Сама фукнция slice урезает массив до заданной длины, а какую она роль играет здесь. Тем более аргументы я не передаю. Что происходит когда я передают объект через apple таким способом. Пробовал с другими функциями массива такое сделать не вышло.
Ответить с цитированием
  #3 (permalink)  
Старый 13.01.2013, 20:32
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от platedz
Про TypedArray я честно говоря не понял.
типизированные массивы - низкоуровневая структура данных с фиксированной длиной, которая может зранить данные только одного типа (пока что числа разных диапазонов).

появились недавно, в IE < 9 не реализованы, внешне от обычных массивов почти ничем не отличаются, но работают напорядок быстрее.

Сообщение от platedz
Сама фукнция slice урезает массив до заданной длины, а какую она роль играет здесь.
не урезает, а возвращает новый массив, который получился при проходе начального от start до end. если индексы не указывать, то start будет 0, а end - length, поэтому возвращается "массив из объекта".

т.е. в нашем случае примерно такой код будет альтернативой:
function slice (obj) {
    for (var i = 0, buf = [], m = parseInt(obj.length, 10); i < m; i++) {
        buf.push(obj[i]);
    }
    return buf;
}

Последний раз редактировалось melky, 13.01.2013 в 20:35.
Ответить с цитированием
  #4 (permalink)  
Старый 14.01.2013, 00:00
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо за пояснение.
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2014, 08:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от platedz
Array.prototype.slice.apply(document.querySelector All(tag))
Это не работает в IE8 кстати.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Куда делась тема про МММ? beard Оффтопик 67 12.07.2012 21:06
Что такое "шаблоны"? jsuse Серверные языки и технологии 5 11.07.2012 08:22
Что означает эта запись? Сергей85 Общие вопросы Javascript 3 13.12.2011 15:10
Zend и Pear для нуба mycoding Серверные языки и технологии 52 13.12.2010 18:32
Браузер доказывает что не видит функцию SleepWalker Общие вопросы Javascript 7 17.06.2009 23:14