1.现在先来看一段代码:
function Person(color){
console.log(this);
this.color=color;
this.GetColor=function(){
console.log(this);
return this.color;
};
this.SetColor=function(color){
console.log(this);
this.color=this;
}
}
让我们来判断下列的对象中的this指向哪里
Person('red') //在这里的this指向windows
var p=new Person('red') //在这里的this指向p
p.GetColor() //在这里的this指向p
var obj={}
p.SetColor().call(obj,'black') //将this指向了obj
var test=p.GetColor();
test() //在这里的this指向了windows
2.那js函数当中的this到底指向如何判断呢?
函数的调用方式大概有6种,所以this的指向也可以大致按照这6种来区分。
A.函数名+小括号直接调用函数,this指向全局对象window。
B.通过对象点来调用对象的某个函数,this指向调用这个函数的对象。
C.当函数被当做事件处理函数时,this指向触发事件的元素。
D.IIFE:this指向window。
E.构造函数中this指向new出来的新对象。
F.定时器的回调函数中this指向window。