var与this定义变量的区别以及疑惑

我们知道: var可以定义一个局部变量,当然如果var定义在最外层的话,就是全局的局部变量,也就算是全局变量了。 而this关键字定义的变量准确的说应该算是成员变量。即定义的是调用对象的成员变量。 另外在“类(构造函数)”中,我们通常也会用var定义私有属性,而this定义公共属性。 以上这些是大家都知道的,若不知道看了就大概知道的。但我今天遇到了一个疑惑,恳请社区高手指点。是这样的:

//打开浏览器控制台执行一下命令 //定义了一个全局变量 var wahaha = “娃哈哈”;//这里双引号改成英文双引号  //输出“娃哈哈” console.log(wahaha);  //输出“娃哈哈”,我们知道这里的this指向的是window,即之前的var定义已经把wahaha变量定义成了window的成员变量 console.log(this.wahaha);

上面代码两条控制台日志语句都输出了“娃哈哈”的结果,然而如果这样

//定义一个类 function ClassA(){ //定义一个私有属性 var wahaha = “娃哈哈”;//这里双引号改成英文双引号 //输出“娃哈哈”;   console.log(wahaha); //输出undefined   console.log(this.wahaha); }  var a = new ClassA();

链接 

原文地址:https://www.cnblogs.com/wxmdevelop/p/7573654.html