绑定全局变量但没有'this'到回调函数

时间:2017-01-19 06:52:27

标签: javascript

这是一个例子。我知道它不起作用,因为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'。

1 个答案:

答案 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());