function xxoo(){
this.name="小刀";
}
var k=new xxoo;
alert(k.name);
alert(window.name);
alert(window.k.name);
上面的代码执行后会看到弹出小刀 空 小刀来,那么为什么会这样呢,我们来看另一段代码。
function xxoo(){
this.name="小刀";
}
xxoo();
alert(window.name);
上面这段代码大家也会看到弹出小刀来,为什么上面的window.name是空呢?下面我为在家讲解一下。
关键在于this上,xxoo()这种形式是执行函数xxoo,所有函数执行是this为window,这时候name就会挂载到window,当new时这时候解析器会把k当作this,然后把this的属性和方法转接到k上面,而这时候k是全局变量,也就是window下的变量,这样window.k.name就可以得到同样的结果,我没有测试FF,因为在网吧,在ie是可以window.k.name的。