js调用函数时使用new

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值