跳到主要内容

JS中this有什么意义

· 阅读需 2 分钟
素明诚
Full stack development

方法借用:一个对象可以借用另一个对象的方法。例如,我们有一个 person 对象,有一个 introduce 方法可以引用 this.name

let person = {
name: "Alice",
introduce: function() {
console.log(`Hello, my name is ${this.name}`);
}
};

// 这个对象有一个 name 属性,但是没有 introduce 方法
let anotherPerson = {
name: "Bob"
};

// 我们可以借用 person 的 introduce 方法
// 实际意思就是说,我通过call方法,把person上的方法拿来了,在你的身上执行

person.introduce.call(anotherPerson); // 输出 "Hello, my name is Bob"

使用 apply() 以数组形式传递函数参数:如果一个函数接受一组值,而你的值是存储在数组中,apply() 可以帮助你以数组形式传递参数。

function sum(a, b, c) {
return a + b + c;
}

let numbers = [1, 2, 3];

console.log(sum.apply(null, numbers)); // 输出 6

使用 bind() 为事件处理程序创建持久性上下文:在处理事件或回调函数时,你可能想要函数在特定上下文中执行,bind() 可以帮助你实现这一点。

let button = {
content: 'Show message',
clickHandler: function() {
console.log(this.content);
}
};

// 这样做会导致 this 丢失,因为 addEventListener 会调用 clickHandler,将 this 设置为调用它的元素(这里是 button 元素)
// document.querySelector('button').addEventListener('click', button.clickHandler);

// 使用 bind,我们可以确保 clickHandler 内的 this 始终指向 button 对象
document.querySelector('button').addEventListener('click', button.clickHandler.bind(button));