タイトルでやった以上に自分が何をしているのかを説明する方法が思いつかないので、繰り返します。オブジェクト内から呼び出された無名関数がそのオブジェクトのスコープにアクセスすることは可能ですか?次のコードブロックは、私ができるよりもうまくやろうとしていることを説明するはずです。
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
。ただし、無名関数内で変数を公開する必要はありません。他にオプションはありますか?