THIS 作用范围不同
alert(Name + ', ' + this.Name); this.Name是在函数InnerFoo()里 但函数InnerFoo()里没this.Name所以返回是undefined
function OuterFoo(){
var Name = 'Outer Name'; function InnerFoo(){
this.Name = 'Inner Name';
alert(Name + ', ' + this.Name);
}
return InnerFoo;
}
var a=new OuterFoo();
a();
</script>
例子很能说明问题
alert(Name + ', ' + this.Name); this.Name是在函数InnerFoo()里 但函数InnerFoo()里没this.Name所以返回是undefined
function OuterFoo(){
var Name = 'Outer Name'; function InnerFoo(){
this.Name = 'Inner Name';
alert(Name + ', ' + this.Name);
}
return InnerFoo;
}
var a=new OuterFoo();
a();
</script>
例子很能说明问题
<script>
function OuterFoo(){
this.Name = 'Outer Name'; function InnerFoo(){
var Name = 'Inner Name';
alert(Name + ', ' + this.Name);
}
return InnerFoo;
}
var a=new OuterFoo(); //实例化
你在上面的function OuterFoo()定义了Name, 实例化后才能使用其属性
alert(a.Name); //这样才能alert出Name
a();
</script>应该是这样的吧
var Name = 'Inner Name';
alert(Name + ', ' + this.Name);
}里面的this.Name都不存在
我试了下 alert(a.Name); 出来的也是undefined啊
this.Name = 'Outer Name';
var wrapper=this;//======
function InnerFoo(){
var Name = 'Inner Name';
alert(Name + ', ' + wrapper.Name);
}
return InnerFoo;
}
var a=new OuterFoo();
a();
this.Name = 'Outer Name';
function InnerFoo(){
alert(this.constructor);
alert(this.Name);
}
return InnerFoo;
}
var a = new OuterFoo();
alert(a);
a();
function InnerFoo(){
alert(this.constructor);
alert(this.Name);
}InnerFoo();</script>