Цикл статей «Учебник Javascript».
Следующая статья — «Подмена контекста – call, apply в Javascript».
Предыдущая статья — «Конструкторы в Javascript».
Рассмотрим пример:
1 2 3 4 5 6 7 8 9 10 |
var obj1 = { x : 3, f : function () { return (this.x); } }; alert(obj1.f()); // 3 var f = obj1.f; alert(f()); // undefined. Контекст потерян. f уже не связана с obj1. |
То же самое произойдёт, если попытаться передать метод f объекта obj1 в качестве параметра в другую функцию.
Чтобы привязать функцию к какому-либо контексту (можно к другому), используется функция bind. Её синтаксис:
<имя функции>.bind(<контекст>, <аргумент1>, <аргумент2>, …)
Пример:
1 2 3 4 5 6 7 8 9 10 |
var obj1 = { x : 3, f : function () { return (this.x); } }; alert(obj1.f()); // 3 var funcVar = obj1.f.bind(obj1); // f содержит метод obj1.f с привязанным контекстом к obj1. alert(funcVar()); // 3 |
Приведённый выше пример можно использовать и для передачи параметров.
Цикл статей «Учебник Javascript».
Следующая статья — «Подмена контекста – call, apply в Javascript».
Предыдущая статья — «Конструкторы в Javascript».