偶然看到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针对当前对象有效。
所以上边程序代码在不同情况会有不同的执行结果。
分享到:
相关推荐
NULL 博文链接:https://wv1124.iteye.com/blog/505231
在javascript中,若省略var关键字而直接赋值,那么这个变量为全局变量,哪怕是在function里定义的。 [removed] function Define() { a = 2; } function Hello() { alert(a); } [removed] 如代码所...
NodeJS和浏览器中this关键字的不同之处 学习过JavaScript的人肯定清楚 处在不同环境下this的指向问题。那么看下面的代码 var type = 1 function toWhere(){ this.type = 2; } toWhere(); console.log(type)...
和其他高级语言一样javascript中也有new关键字,我们以前认知的new是用来创建一个类的实例对象,但在js中万物皆是对象,为何还要new关键字呢,其实js中new关键字不是用来创建一个类的实例对象,而是用于继承。...
NULL 博文链接:https://wv1124.iteye.com/blog/505236
其中JavaScript 中的 this 关键字,就是一个比较容易混乱的概念,在不同的场景下,this会化身不同的对象。有一种观点认为,只有正确掌握了 JavaScript 中的 this 关键字,才算是迈入了 JavaScript 这门语言的门槛。...
详解JavaScript中this关键字的用法_.docx
精通JavaScript的this关键字_.docx
javascript 中 的关键字的保留字
主要介绍了javascript中let和var以及const关键字的区别,下面我们来一起学习一下吧
JavaScript关键字保留字属性及说明 适合初学者 对JavaScript有一定的基础知识
不能使用JavaScript中的关键字和保留字命名。 2.3.1 标识符 3、关键字 关键字:是指在JavaScript语言中被事先预定好并赋予特殊含义的单词。 保留字:是指预留的,未来可能会成为保留关键字的单词。 2.3.1 标识符 3...
主要介绍了javascript与jquery中的this关键字用法,结合实例形式简单分析了this关键字用于获取当前对象的使用技巧,非常简单易懂,需要的朋友可以参考下
this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,下面分四种情况,详细讨论this的用法,感兴趣的朋友可以了解下
JavaScript 中的 this 关键字是一个非常重要的概念,它经常会使开发者感到困 惑。通常来说,this 的值是在函数被调用时确定的,其值取决于函数被调用的方 式。本文将介绍 JavaScript 中 this 的用法,从而帮助开发者...
本文实例总结了JavaScript中this关键字用法。分享给大家供大家参考,具体如下: 例1: function a(){ var user = "yao"; console.log(this.user);//undefined console.log(this);//window } a(); 等价于: ...
1 function varscope(){所谓作用域链就是:一个函数体中嵌套了多层函数体,并在不同的函数体中定义了同一变量, 当其中一个函数访问这个变量时,便
主要和大家聊一聊JavaScript的New关键字,一般我们通过New关键字来创建一个类的实例对象,感兴趣的小伙伴们可以参考一下