随着bind()
方法,一个对象可以借用另一个对象的方法。
下面的示例创建 2 个对象(人员和成员)。
成员对象借用了 person 对象的 fullname 方法:
const person = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
const member = {
firstName:"Hege",
lastName: "Nilsen",
}
let fullName = person.fullName.bind(member);
亲自试一试 »
有时,bind()
必须使用方法来防止丢失this。
在下面的示例中,person 对象具有显示方法。在显示方法中,this指的是 person 对象:
const person = {
firstName:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
person.display();
亲自试一试 »
当函数用作回调时,this丢失了。
本示例将尝试在 3 秒后显示人名,但会显示不明确的反而:
const person = {
firstName:"John",
lastName: "Doe",
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:"John",
lastName: "Doe",
display: function () {
let x = document.getElementById("demo");
x.innerHTML = this.firstName + " " + this.lastName;
}
}
let display = person.display.bind(person);
setTimeout(display, 3000);
亲自试一试 »
在 JavaScript 中,this
关键字指的是对象。
哪个对象取决于如何this
正在被调用(使用或调用)。
这个this
关键字根据其使用方式指代不同的对象:
在对象方法中,this 指的是对象。 |
独自的,this 指的是全局对象。 |
在一个函数中,this 指的是全局对象。 |
在函数中,在严格模式下,this 是undefined 。 |
在一次活动中,this 指的是元素收到该事件的。 |
方法如call() ,apply() , 和bind() 可以参考this 到任何物体。 |
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!