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针对当前对象有效。

所以上边程序代码在不同情况会有不同的执行结果。

相关推荐