Is it possible for a function called from within an object to have access to that object's scope?
Posted
by
Elliot Bonneville
on Stack Overflow
See other posts from Stack Overflow
or by Elliot Bonneville
Published on 2012-07-09T02:25:18Z
Indexed on
2012/07/09
3:16 UTC
Read the original article
Hit count: 288
JavaScript
I can't think of a way to explain what I'm after more than I've done in the title, so I'll repeat it. Is it possible for an anonymous function called from within an object to have access to that object's scope? The following code block should explain what I'm trying to do better than I can:
function myObj(testFunc) {
this.testFunc = testFunc;
this.Foo = function Foo(test) {
this.test = test;
this.saySomething = function(text) {
alert(text);
};
};
var Foo = this.Foo;
this.testFunc.apply(this);
}
var test = new myObj(function() {
var test = new Foo();
test.saySomething("Hello world");
});
When I run this, I get an error: "Foo is not defined." How do I ensure that Foo
will be defined when I call the anonymous function? Here's a jsFiddle for further experimentation.
Edit: I am aware of the fact that adding the line var Foo = this.Foo;
to the anonymous function I pass in to my instance of myObj
will make this work. However, I'd like to avoid having to expose the variable inside the anonymous function--do I have any other options?.
© Stack Overflow or respective owner