我想不出一种方法来解释我在标题中所做的更多的事情,所以我会重复一遍。从对象内调用的匿名函数是否可以访问该对象的范围?下面的代码块应该解释我想要做的比我能做的更好:
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");
});
当我运行它时,我收到一个错误:“Foo 未定义。” 我如何确保Foo
在调用匿名函数时定义它?这是一个用于进一步实验的 jsFiddle 。
编辑:我知道将行添加var Foo = this.Foo;
到我传递给我的实例的匿名函数myObj
将使这项工作。但是,我想避免在匿名函数中公开变量——我还有其他选择吗?