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
  • 869
  • 8
  • 19
  • 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-
  • 209,133
  • 54
  • 439
  • 449
  • 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,591
  • 1
  • 17
  • 22