Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2014, 20:08
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

конструкция 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);


или здесь нет никакой разницы, хотят запутать?)))
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2014, 20:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от skrudjmakdak
ради прикола узнаем что arguments - это массив
неугадал
Ответить с цитированием
  #3 (permalink)  
Старый 22.02.2014, 20:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

skrudjmakdak,
Цитата:
Несмотря на доступ по индексу и наличие свойства length, arguments не является массивом, т.е не принадлежит типу Array.
http://javascript.ru/arguments
Ответить с цитированием
  #4 (permalink)  
Старый 22.02.2014, 20:35
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ага, т.е. той самой волшебной строкой мы получаем обычный массив..

а вот еще пример, уже мой:
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 (){/* ... */});
Ответить с цитированием
  #5 (permalink)  
Старый 22.02.2014, 20:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от skrudjmakdak
var d = Array.prototype.slice(div, 0);
тут ничего незабыли?
Ответить с цитированием
  #6 (permalink)  
Старый 22.02.2014, 20:46
Аватар для Дзен-трансгуманист
√₋̅₁̅
Отправить личное сообщение для Дзен-трансгуманист Посмотреть профиль Найти все сообщения от Дзен-трансгуманист
 
Регистрация: 18.06.2012
Сообщений: 385

Цитата:
arguments не является массивом, т.е не принадлежит типу Array
<sarcasm>
иными словами, не просто не Массив, но и вообще даже не массив
продолжая в том же духе, можно сказать, что инстанс Uint32Array тоже не массив, потому что не принадлежит типу Array

железная логика
а я-то дурак всегда думал, что массив это контейнер элементов с поиндексным доступом
теперь будем знать, что массив это то, что принадлежит типу Array
</sarcasm>

рони,
не читайте до обеда советских газет (ц)
__________________

Гейзенберг, возможно, читал этот тред.

Последний раз редактировалось Дзен-трансгуманист, 22.02.2014 в 20:49.
Ответить с цитированием
  #7 (permalink)  
Старый 22.02.2014, 20:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Дзен-трансгуманист,
а какже тогда запись из советской газеты про
Цитата:
arguments.pop() // ошибка !
и то что ноделист "живой" ?
Ответить с цитированием
  #8 (permalink)  
Старый 22.02.2014, 20:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от Дзен-трансгуманист
инстанс Uint32Array
про это я совсем незнаю -- можно ссылку
Ответить с цитированием
  #9 (permalink)  
Старый 22.02.2014, 21:04
Аватар для Дзен-трансгуманист
√₋̅₁̅
Отправить личное сообщение для Дзен-трансгуманист Посмотреть профиль Найти все сообщения от Дзен-трансгуманист
 
Регистрация: 18.06.2012
Сообщений: 385

рони,
Typed Array Specification
тут тоже нет попов и пушей, и тем не менее
__________________

Гейзенберг, возможно, читал этот тред.

Последний раз редактировалось Дзен-трансгуманист, 22.02.2014 в 21:14.
Ответить с цитированием
  #10 (permalink)  
Старый 22.02.2014, 21:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Дзен-трансгуманист
иными словами, не просто не Массив, но и вообще даже не массив
если не смотреть на абстракцию, а принять во внимание низкоуровневые типы данных и попытаться представить их представление со стороны движка, то можно сказать, что в JS тип данных Array - это объект, а не массив. О_о (не берём в учёт типизированные массивы)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что за чудная конструкция lancer Общие вопросы Javascript 1 29.08.2012 01:28
Почему не работает конструкция jquery quebek Элементы интерфейса 1 19.09.2011 23:14
Возможна ли такая конструкция? AlexZ jQuery 3 18.11.2010 00:41
Что за конструкция? (из jQuery) Yojik Общие вопросы Javascript 6 22.08.2010 15:46
PHP-шная конструкция ${$var1.$var2}. А в яваскрипте? maxikuku Общие вопросы Javascript 5 16.06.2009 10:36