目录

JavaScript 函数 bind()


函数借用

随着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);
亲自试一试 »

保存this

有时,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);
亲自试一试 »


什么是this

在 JavaScript 中,this关键字指的是对象

哪个对象取决于如何this正在被调用(使用或调用)。

这个this关键字根据其使用方式指代不同的对象:

在对象方法中,this指的是对象
独自的,this指的是全局对象
在一个函数中,this指的是全局对象
在函数中,在严格模式下,thisundefined
在一次活动中,this指的是元素收到该事件的。
方法如call(),apply(), 和bind()可以参考this任何物体

笔记

this不是变量。这是一个关键字。您无法更改的值 this

也可以看看:

JavaScriptthis教程