解析器在调用函数时,每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称之为函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象.
简单来说一下函数中this指向问题,
1.this是什么?
任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是 window
所以函数内部都有一个变量this,它的值是调用当前函数的对象
2.如何确定this的值?
test() : 指向window
p.test() : 指向p
new test() : 指向 新创建的对象
p.call(obj) : 指向 obj
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)
return this.color = color
}
}
Person('red'); // this 指向 window
var p = new Person('yellow') // this 指向 p
p.getColor();// this 指向 p
var obj = {}
p.setColor.call(obj,'black') // this 指向 obj
var test = p.setColor;
test();// this 指向 window
function fun1(){
function fun2(){
console.log(this)
}
fun2() // this 指向 window
}
fun1()