问题
Is this possible to add variable to callback scope? What I want to achieve is:
...
Foo.prototype.bar = function(fn) {
var baz = "baz!";
fn.call(this);
}
...
Foo.bar(function() {
console.log(baz) // gives "baz!"
});
I know I can pass baz variable as an argument or this but I'm interested in something like above.
回答1:
No, it's not possible. The only ways are the ones you pointed out: as an argument or in this.
回答2:
What about doing it this way:
var Foo = function(){}
Foo.prototype.handle = function(fn) {
var baz = "baz !";
eval('(' + fn.toString() + ')();');
}
var foo = new Foo;
foo.handle(function (){
console.log(baz);
});
来源:https://stackoverflow.com/questions/8626951/inject-variable-into-callback-function-scope