5

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.

jesper
  • 879
  • 8
  • 21
  • You probably mean `(new Foo).bar`, since it's a property of instances, not of the constructor. – pimvdb Dec 24 '11 at 22:50

2 Answers2

4

No, it's not possible. The only ways are the ones you pointed out: as an argument or in this.

Ry-
  • 218,210
  • 55
  • 464
  • 476
  • Event if variable was a function? To be more precise: callback function should have access to some function defined in place of calling the callback. – jesper Dec 24 '11 at 21:41
  • @jesper: Even if the variable was a function, I'm afraid. – Ry- Dec 24 '11 at 21:44
0

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);
});
webNeat
  • 2,768
  • 1
  • 20
  • 22