/* bind() 最简单的用法是创建一个函数,无论如何调用,它都会使用特定的 this 值进行调用。
JavaScript 新手经常犯的一个错误是将一个方法从对象中提取出来,然后再调用,并期望方法中的 this 是原来的对象(比如在回调中传入这个方法)。
然而,如果不做特殊处理的话,通常会丢失原始对象。使用这个函数加上原始的对象来创建一个绑定函数,巧妙地解决了这个问题:*/
// 顶级的“this”绑定到“globalThis”。
this.x = 9;
const module = {
x: 81,
getX() {
return this.x;
},
};
// 'getX'的‘this’参数绑定到"module"
console.log(module.getX()); //81
const retrieveX = module.getX;
// “retrieveX”的“this”参数在非严格模式下绑定到“globalThis”
console.log(retrieveX());//9
// 创建一个新函数“boundGetX”,并将“this”参数绑定到“module”。
const boundGetX = retrieveX.bind(module);
console.log(boundGetX());//81