this永远指向调用它的对象。
1、如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window。
fn:function(){
console.log(this.name); }
}
obj.fn();
打印出的结果就是window,因为它最外层没有被调用,按照规范写的话是window.func(),所以指向window。
2、如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。
var obj = {
name:"imooc",
fn:function(){
console.log(this.name); } //imcco
}
obj.fn();
fn被obj所调用,this指向的就是obj,那么this.name就是imooc,如果是这样写呢?
var name="imooc";
var obj = {
fn:function(){
console.log(this.name); }
}
obj.fn();
同样的,fn被obj所调用,只想obj,但是obj中没有name属性,所以为undefined。