显式绑定与硬绑定
硬绑定
function foo(){
console.log( this.a );
}
var obj = {
a:2
};
var bar = function(){
foo.call(obj);
};
bar();
setTimeout(bar,100); //2
//硬绑定的bar不可能再修改它的this
bar.call( window ); // 2
//传参又没用上~~硬绑定的典型应用场景就是创建一个包裹函数,负责接受参数并返回值:
另一种使用方法是创建一个可以重复使用的辅助函数:
ES5提供了内置的方法Function.prototype.bind,用法如下:
bind( ... )会返回一个硬绑定的新函数,它会把你指定的参数设置为this的上下文并调用原始函数。
第三方库的许多函数,以及JavaScript语言和宿主环境中许多新的内置函数,都提供了一个可选的参数,通常被称为“上下文”,其作用和bind(...)一样,确保你的回调函数使用指定的this.
Last updated
Was this helpful?