この Javascript コードは、ネストされた関数 (コンストラクター内にネストされている) 内で「this」キーワードを使用しています。
o=new MyCtor();
for (var p in o) {
print(p);
print(o[p]);
}
function MyCtor() {
this.a=1;
var instance=this;
nested();
function nested() {
this.b=2;
instance.c=3;
}
}
結果は次のとおりです。
a
1
c
3
print() は、ブラウザーで alert() のように出力を画面にダンプするだけであることに注意してください (ブラウザー内ではなく、スタンドアロンの Spidermonkey でテストしています)。プロパティ「b」は「this.b」では作成できないことに注意してください。
コンストラクター内のネストされた関数で「this」が何を参照しているのか疑問に思っていますか?