我试图理解为什么在直接调用外部函数时内部函数可以访问外部函数的公共属性,但在将其分配给变量时不能访问?
例子:
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
我尝试的一件事是从中删除this
关键字alert(this.x);
,它确实适用于所有三种情况。但是,如果我确实删除了this
关键字,我将访问传入的参数,而不是公共变量,这绝对不是所需的操作。有人可以解释这种行为吗?