如果函数有范围,它们应该在该范围内执行,但在这里我认为它是不同的请参阅代码:
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 Code Online (Sandbox Code Playgroud)
创建新对象时,Run()将成为对象的公共方法或仅属于var的方法bar.该方法不应该能够从其中执行该privateAlert()功能; 因为函数具有范围,所以它只能从已声明的函数内执行,但是这个函数已经失去了创建它的范围并且它仍然被执行.请澄清一下吗?
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |