JavaScript Function bind()
- Предыдущая страница JS функция Apply
- Следующая страница JS клوزур
Функциональное borrowing (Function Borrowing)
Используя метод bind(), один объект может borrowить метод у другого объекта.
В этом примере создаются 2 объекта (person и member).
Объект member borrowит метод fullname объекта person:
например
const person = { firstName: "Bill", lastName: "Gates", fullName: function () { return this.firstName + " " + this.lastName; } } const member = { firstName: "Hege", lastName: "Nilsen", } let fullName = person.fullName.bind(member);
сохранения this
иногда необходимо использовать метод bind() для предотвращения потери this.
В этом примере объект person имеет метод display. В методе display,this это означает объект person:
например
const person = { firstName: "Bill", lastName: "Gates", display: function () { let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; } } person.display();
Когда функция используется в качестве обратного вызова,this утеряется.
Этот пример попытается показать имя через 3 секунды, но он будет показывать undefined:
например
const person = { firstName: "Bill", lastName: "Gates", display: function () { let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; } } setTimeout(person.display, 3000);
Метод bind() решает эту проблему.
Метод bind() используется для привязки person.display к person.
Этот пример будет показывать имя через 3 секунды:
например
const person = { firstName: "Bill", lastName: "Gates", display: function () { let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; } } let display = person.display.bind(person); setTimeout(display, 3000);
что такое this?
в JavaScript,this
ключевое слово ссылаетсяобъект.
ссылаетсякоторыйобъект зависит от способа вызова (использования или вызова).
в зависимости от способа использования, ключевое слово this
ссылается на разные объекты:
- в методах объекта:
this
ссылается наобъект. - при отдельном использовании:
this
ссылаетсяглобальный объект. - в функции:
this
ссылаетсяглобальный объект. - в функции, в строгом режиме:
this
являетсяundefined
. - в событии:
this
ссылается на объект, принимающий событиеэлемент. - методы call()、apply() и bind() могут ссылаться на
this
ссылается налюбой объект.
Внимание:this
не переменная. Это ключевое слово. Вы не можете изменить this
значение.
См. также:
Урок:JavaScript this
- Предыдущая страница JS функция Apply
- Следующая страница JS клوزур