Skip to content

Instantly share code, notes, and snippets.

@i-Hun
Last active December 19, 2015 21:39
Show Gist options
  • Save i-Hun/6022017 to your computer and use it in GitHub Desktop.
Save i-Hun/6022017 to your computer and use it in GitHub Desktop.
JS: prototype and arguments
# Prototype
http://habrahabr.ru/post/117868/
arguments -- переменная, доступная внутри функции и содержащая аргументы и ссылку на саму функцию.
Несмотря на доступ по индексу и наличие свойства length, arguments не является массивом, т.е не принадлежит типу Array.
Поэтому для arguments нельзя напрямую вызвать методы этого класса:
arguments.pop() // ошибка !
Можно, однако, вызвать методы Array через apply/call:
var args = Array.prototype.slice.call(arguments, 0) //Мы вызываем метод slice прототипа Array от лица arguments.
.slice - ищет прототип slice в прототипах массива, то-есть глубокий поиск, начиная от экземпляра созданного массива
call(...) - вызывает конструктор для наполнения его тем что есть в контексте.
, 0 -- после передачи контекста в call можно передавать параметры. Передаём 0, чтобы slice применялся с самого первого элемента.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment