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针对当前对象有效。
所以上边程序代码在不同情况会有不同的执行结果。