function Test(){
this.brand = "mac";
this.sayBrand = function (){
console.log(brand); //这里如果不写成this.brand
}
}
var t = new Test();
t.say();
为什么控制台会报错呢?
我理解的是:
t = new T() ————> T里的this会绑定成t。
也就是:
t = {
t.brand : "mac",
t.sayBrand : function (){
console.log(brand)
**//这里面的brand难道不应该就近取t里变量brand吗? **
}
}
混淆了变量跟属性的概念,brand无法在本作用域找到时是会往上寻找,但是t.band是属性,所以一定不会找到它,访问属性唯有对象+属性这样访问。brand往上的作用域就是全局了,全局没声明这个变量自然报错。