javascript中作用于和new、this、var关键字

偶然看到javascript中有new关键字使用,且在用与不用的时候结果不尽相同



<script>
var temp = 1;
function Test(){
this.temp = 10;//NO.1
alert(this.temp);//NO.2
alert(temp;)//NO.3

}


new Test();//NO.4
Test();//NO.5
</script>





如上代码在执行的时候会弹出四次,结果是:
10、1、10、10
如果把NO.1处代码改为 temp=10,结果变为:
undefined、10、10、10

下边根据自己理解作如下分析:
首先javascript中也有对象,有自己的属性,默认对象window,当在方法外部使用var 定义变量时相当全局变量,而在方法内部使用var定义的变量相当局部变量。


同时也可以使用new关键字生成对象,并作为当前操作对象 ,内部使用的this关键字只对该对象起作用;


因此上边例子可做如下理解:
通过var定义的temp变量属于全局变量,所以方法Test中NO.3处弹出是全局变量temp的值;
但是this.temp有两种情况,当我们通过NO.5处方式调用的时候,this代表window对象操作的是全局变量中的temp变量,然而我们通过NO.4处方式调用的时候,this指定的是当前对象,this.temp针对当前对象有效。
所以上边程序代码在不同情况会有不同的执行结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值