这可以将变量添加到回调范围吗?我想要实现的是:
... Foo.prototype.bar = function(fn) { var baz = "baz!"; fn.call(this); } ...
Foo.bar(function() { console.log(baz) // gives "baz!" });
我知道我可以将baz
变量作为参数或this
传递,但我对上述内容感兴趣。
答案 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);
});