Last active
December 19, 2015 21:39
-
-
Save i-Hun/6022017 to your computer and use it in GitHub Desktop.
JS: prototype and arguments
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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