JS中this有什么意义
· 阅读需 2 分钟
方法借用:一个对象可以借用另一个对象的方法。例如,我们有一个 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));