2017-01-19 12 views
0

ここは例です。 bind()は関数の引数をバインドするだけなので、うまくいきません。私の場合はグローバル変数をバインドしますが、コールバック関数に 'this'を指定しないでください

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

私は申し訳ありませんが、これは典型的な[xiproblem](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());

関連する問題