将变量注入回调函数范围

时间:2011-12-24 21:24:28

标签: javascript scope closures

这可以将变量添加到回调范围吗?我想要实现的是:

...
Foo.prototype.bar = function(fn) {
    var baz = "baz!";
    fn.call(this);
}
...
Foo.bar(function() {
    console.log(baz) // gives "baz!"
});

我知道我可以将baz变量作为参数或this传递,但我对上述内容感兴趣。

2 个答案:

答案 0 :(得分:4)

不,这是不可能的。唯一的方法是你指出的:作为一个论点或this

答案 1 :(得分:0)

这样做是怎么回事:

var Foo = function(){}
Foo.prototype.handle = function(fn) {
    var baz = "baz !";
    eval('(' + fn.toString() + ')();');
}

var foo = new Foo;
foo.handle(function (){
    console.log(baz);
});