1.test()和 new test()的不同
var a=5;
function test(){
a=0;
alert(a);
alert(this.a);
var a;
alert(a);
}
test();//0 5(window中的a值是5) 0
new test();//0 undefined(实例中没有a属性) 0
解答: new除了执行正常的函数功能外,还会生成一个实例,并吧这个对象实例返回出来,没有new时,this指window,而new时,this指新实例对象
例题
p = 5
function b() {
this.p = 1;
alert(p)
}
new b();//?
b();//?,如果删除该语句呢?
alert(p);
new b();
解答:
new操作符
- 5 1 1 1
- new b()这时this指实例,p指的是window中的p,显示5
- 再b(),这相当于window.b(),this指window,把window中的p值从5 改为了1,显示1;
- alert( p) 同样是window中的p,显示1;
- new b(),p指的是window中的p,显示1
- 如果删除中间的语句b(),输出555,
因为window中的p没被改过,alert§中的p都是指window中的p值,是5

945

被折叠的 条评论
为什么被折叠?



