2017-01-19 79 views
0

下面是一個示例。我知道它不起作用,因爲bind()只是綁定一個函數的參數。將全局變量綁定到回調函數

global_var = 2 
var foo = function(){ 
    console.log(global_var) 
} 
var bar = foo.bind(null,/* global_var =*/ 3) 
setTimeout(bar) 

在我而言,foo是從圖書館所以它不能被修改(不明白爲什麼它使用全局範圍內),這就是爲什麼我不能綁定一個作用域「本」的功能。

酒吧將是一個回調,我想確保它可以輸出'3'每次。

+0

我想提的庫,它的功能和你正在嘗試做的會更好的。這個與例子的隔離對我來說看起來毫無意義。 – sabithpocker

+0

@sabithpocker對不起,我不能提到圖書館。但我認爲我的問題是有道理的,因爲這是所有語言水平的技巧。 – templefox

+0

對不起,但這看起來像一個典型的[xyproblem](http://xyproblem.info) – sabithpocker

回答

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