一、this是什么
function Animal(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=color;
};
}
Animal("red");//只执行第一个输出,this为window
var a=new Animal("yellow");//只执行第一个输出,this为a
a.getColor();//this是a
var obj={}
a.setColor().call(obj,"blue");//让setColor称为obj临时的方法进行调用,this是obj
var test=a.setColor;
test();//this是window
function fn1(){
fucntion fn2(){
console.log(this);
}
fn2();//this是window
}
fn1();
(1)函数外部,this为window
(2)函数内部:任何函数本质都是通过某个对象来调用的,如果没有直接指定就是window,所有函数内部都有一个变量this,他的值是调用函数的当前对象
二、如何确定this的值
test():window
a.test():a
new test():新创建的对象
a.call(obj):obj