UserAndLINUX "More than USER" v14.05(09)

Page 39

programming значения – this, он же контекст функции, // эквивалентно arr.push(3, 4) и arguments. add(4); Метод Function.prototype.call может принимать любое количество аргумен- console.log(arr); тов. Первый из них будет использоваться // ссылается на [1, 2, 3, 3, 4] как this, а оставшиеся будут переданы вызываемой функции как аргументы. Область видимости и this В следующем случае this будет неизменArray.prototype.slice.call([1, 2, ным в разных областях видимости. Это 3], 1, 2) исключение в правиле и оно часто приво// ссылается на [2] дит к ошибкам среди начинающих разработчиков. Метод Function.prototype.apply очень function scoping () { console.log(this); похож на предыдущий, только аргументы в нем передаются одним массивом, вместо неопределенного количеств аргуменreturn function () { console.log(this); тов, как в методе call. String.prototype.split. apply('13.12.02', ['.'])

}; }

// ссылается на ['13', '12', '02'] scoping()();

Метод Function.prototype.bind возвращает специальную функцию, которая, в свою очередь, может быть использована для вызова еще одной функции. От ее имени и будет вызван bind. Функция всегда будет использовать переданный ей this, и в тоже время, ей можно передать несколько аргументов, в качестве всегда используемых в возвращаемой функции. Это может быть очень удобно для каррирования оригинальной функции. var arr = [1, 2]; var add = Array.prototype.push. bind(arr, 3);

// эквивалентно arr.push(3) add();

ualinux.com

// ссылается на Window Распространенный способ обойти создавшуюся проблему – это создать локальную переменную, содержащую ссылку на this в текущей функции, а значит, и в ее области видимости. Она останется доступной во вложенной функции. Вложенная функция, в свою очередь, будет иметь свою собственную переменную this, что означает невозможность использования this родительской функции напрямую. function retaining () { var self = this; return function () { console.log(self); };

Mo r e Than USER v14.05(9)

39


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.