var color = "orange";
window.color = "red";
var person = {
color:"blue"
};
function sayColor(){
var color = "pink";
console.log(this.color);
}
sayColor(); //red,this谁调用指向谁,没有调用的时候默认为window调用
person.sayColor = sayColor;
person.sayColor(); //blue,this谁调用指向谁,person调用所以指向person的color
person.sayColor.call(person); //blue,如果使用call,person调用指向person的color
person.sayColor.call(); //red,this谁调用指向谁,如果使用call调用,那就看call的第一个参数是谁,是谁就指向谁,没有的话指向window
person.sayColor.call(this); //red,this谁调用指向谁如果使用call,那就看call的第一个参数是谁,是谁就指向谁
person.sayColor.call(window); //red,this谁调用指向谁,如果使用call,那就看call的第一个参数是谁,是谁就指向谁
总结:this指向中,方法由谁调用就指向谁,如果是call和apply调用,那么this指向这两个的第一个参数,如果第一个参数没有或者为window都指向window,如果为对象就指向改对象