不知道怎么解释,直接上伪代码
1.var pet={
name:’miao’,
talk:function(){
console.log(this.name);
console.log(this===pet);
}
}
pet.talk();
输出结果:miao,true
说明这种情况下,this指向本层对象作用域,就是pet
2.function pet(name){
this.name=name;
console.log(this.name);
console.log(this===global);
}
pet(‘miao’);
输出结果:miao,true,说明这样直接调用一个没有实例化的全局对象输出的this结果是global对象。
3.function pet(name)
this.name=name;
this.talk =function(){
console.log(this.name);
console.log(this);
}
}
var cat =new pet(‘miao’);
cat.talk();
这里的this指向实例cat
输出结果:miao,cat对象的json格式
说明通过构造函数实例化以后,因为是通过挂载的函数输出的,所以this指向的是实例本身