这是一个例子。我知道它不起作用,因为bind()只是绑定一个函数的参数。
global_var = 2
var foo = function(){
console.log(global_var)
}
var bar = foo.bind(null,/* global_var =*/ 3)
setTimeout(bar)
在我的情况下,foo来自一个库,因此无法修改(不理解为什么它使用全局范围),这就是为什么我不能将范围“this”绑定到函数。
bar将成为一个回调,我想确保它每次都能输出'3'。
答案 0 :(得分:0)
您始终可以扩展全局功能。请查看以下代码段。
希望这能帮到你!
var global = 2;
//your global library variable
var foo = function() {
console.log('inside foo library');
};
//make the global function extended
foo = (function(oldFn) {
function newFoo() {
oldFn();
console.log('inside extended function')
return 3;
}
return newFoo;
})(foo);
//callback variable
var bar = foo;
console.log(bar());