JavaScript Function bind()
- Forrige side JS funktion Apply
- Næste side JS lukning
函数借用(Function Borrowing)
通过使用 bind() 方法,一个对象可以从另一个对象借用一个方法。
下面的例子创建了 2 个对象(person 和 member)。
member 对象借用了 person 对象的 fullname 方法:
实例
const person = { firstName:\"Bill\", lastName: "Gates", fullName: function () { return this.firstName + \" \" + this.lastName; x.innerHTML = this.firstName + " " + this.lastName; x.innerHTML = this.firstName + " " + this.lastName; const member = { firstName:\"Hege\", lastName: "Nilsen", x.innerHTML = this.firstName + " " + this.lastName; let fullName = person.fullName.bind(member)bind(person)
保留 this
有时必须使用 bind() 方法来防止丢失 this.
在下面的例子中,person 对象有一个 display 方法。在 display 方法中,this 指的是 person 对象:
实例
const person = { firstName:\"Bill\", lastName: "Gates", display: function () { let x = document.getElementById("demo"); let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; x.innerHTML = this.firstName + " " + this.lastName; person.display();
当函数用作回调时,this 会丢失。
这个例子将尝试在 3 秒后显示人名,但它会显示 undefined:
实例
const person = { firstName:\"Bill\", lastName: "Gates", display: function () { let x = document.getElementById("demo"); let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; 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"); let x = document.getElementById("demo"); x.innerHTML = this.firstName + " " + this.lastName; x.innerHTML = this.firstName + " " + this.lastName; }let display = person.display.bind(person) ;
Prøv det selv
Hvad er this?this
i JavaScript,objekt.
refererernøgleord referererobjekt afhænger af opkalds (brug eller opkald) måde. Hvilken
afhængigt af brugsformen, nøgleordet this
refererer til forskellige objekter:
- i objektmetoder
this
refererer til detteobjekt. - brugt alene
this
referererglobalt objekt. - i funktionen
this
referererglobalt objekt. - i funktionen, i strengt mode
this
erundefined
. - i begivenheden
this
refererer til den element, der modtager begivenhederneelement. - call()、apply() og bind() og andre metoder kan bruges til at
this
refererer tilEnhver objekt.
Bemærk:this
er ikke en variabel. Det er en nøgleord. Du kan ikke ændre det this
værdien.
Se også:
Læringsguide:JavaScript this
- Forrige side JS funktion Apply
- Næste side JS lukning