外部関数が直接呼び出されたときに内部関数が外部関数のパブリック プロパティにアクセスできるのに、変数に割り当てられたときにはアクセスできない理由を理解しようとしています。
例:
function outer(x,y){
this.x = x;
this.y = y;
function inner(){
alert(this.x);
}
inner();
}
outer(1,2); //As expected, alerts 1
var func = outer(1,2) //Also alert 1
var func2 = new outer(1,2); //Alerts undefined
私が試したことの1つは、this
キーワードを削除するalert(this.x);
ことで、3つのケースすべてで機能しました. ただし、this
キーワードを削除すると、パブリック変数ではなく、渡されたパラメーターにアクセスすることになり、これは明らかに望ましいアクションではありません。誰かがこの動作を説明できますか?