関数にスコープがある場合は、そのスコープ内で実行する必要がありますが、ここでは異なると思いますコードを参照してください。
function foo() {
var privateVal = "Private Val";
this.publicVal = "Public Val";
var privateAlert = function (str) {
alert(str + this.publicVal);
alert(str + privateVal);
}
this.Run = function () //see here
{
privateAlert("Private Call: ");
this.publicAlert = privateAlert;
this.publicAlert("Public Call: ");
privateAlert = this.publicAlert;
privateAlert("Private Call: ");
this.publicAlert("Public Call: ");
}
}
var bar = new foo();
bar.Run();
新しいオブジェクトが作成されるRun()
と、オブジェクトの public メソッドまたは var にのみ属するメソッドになりbar
ます。privateAlert()
そのメソッドは、その中から関数を実行できないはずです。関数にはスコープがあるため、宣言された関数内からのみ実行できますが、この関数は作成されたスコープを失い、まだ実行中です。これを明確にしてください。