JavaScript 函数 bind()
函数借用
随着 bind()
方法,一个对象可以借用另一个对象的方法。
下面的例子创建了两个对象(person 和 member)。
member 对象从 person 对象借用了 fullname 方法:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
全名:函数(){
返回 this.firstName + " " + this.lastName;
}
}
const 成员 = {
名字:“Hege”,
姓氏:“Nilsen”,
}
让 fullName = person.fullName.bind(member);
亲自尝试 »
保存 这
有时 bind()
必须使用方法来防止丢失这.
在以下示例中,person 对象有一个 display 方法。在 display 方法中, 这 指的是 person 对象:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
显示:函数(){
让 x = document.getElementById(“演示”);
x.innerHTML = 这个.firstName + “” + 这个.lastName;
}
}
人.显示();
亲自尝试 »
当函数用作回调时, 这 丢失了。
此示例将尝试在 3 秒后显示人名,但它将显示 不明确的 反而:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
显示:函数(){
让 x = document.getElementById(“演示”);
x.innerHTML = 这个.firstName + “” + 这个.lastName;
}
}
设置超时(person.display,3000);
亲自尝试 »
这 bind()
方法解决了这个问题。
在以下示例中, bind()
方法用于将 person.display 绑定到 person。
此示例将在 3 秒后显示人名:
例子
const 人 = {
名字:“约翰”,
姓氏:“Doe”,
显示:函数(){
让 x = document.getElementById(“演示”);
x.innerHTML = 这个.firstName + “” + 这个.lastName;
}
}
让 display = person.display.bind(person);
设置超时(显示,3000);
亲自尝试 »
什么是 这?
在 JavaScript 中, this
关键字指的是目的.
哪个 对象取决于如何this
正在被调用(使用或叫)。
这 this
关键字根据其使用方式指代不同的对象:
在对象方法中, this 指的是目的. |
独自的, this 指的是全局对象. |
在一个函数中, this 指的是全局对象. |
在函数中,在严格模式下, this 是undefined . |
在一次活动中, this 指的是元素 接收该事件的。 |
类似方法 call() , apply() , 和 bind() 可以参考this 到任何物体. |