this:指向一个基于函数执行环境动态绑定的对象,非函数被声明时的环境

this指向大致分为四种情况

<1>作为对象的方法调用:当函数作为对象的方法被调用时,this 指向该对象

<2>作为普通函数被调用时:此时的 this 总是指 向全局对象

name='global_name';
var myObject={
name:'seve',
getName:function(){
return this.name;
}
};
console.log(myObject.getName());
var getName=myObject.getName;
console.log(getName());

<3>构造器调用

当用 new 运算符调用函数时,该函数总 会返回一个对象,通常情况下,构造器里的 this 就指向返回的这个对象

但用 new 调用构造器时,还要注意一个问题,如果构造器显式地返回了一个 object 类型的对 象,那么此次运算

结果最终会返回这个对象,而不是我们之前期待的 this

如果构造器不显式地返回任何数据,或者是返回一个非对象类型的数据,就不会造成上述 问题.

<4>Function.prototype.call 或 Function.prototype.apply 调用

可以动态地改变传入函数的 this

var obj1={
name:'seve',
getName:function(){
return this.name;
}
};

var obj2={name:'anno'};
console.log(obj1.getName.call(obj2));