解析器(浏览器)在调用函数的时候都会向函数内部传递一个隐含的参数
这个银行的参数就是this,this指向的是一个对象,这个对象成为函数的上下文对象
根据函数的调用方式不同,this会指向不同的对象:
1. 以函数的形式调用,this永远都是window
2. 以方法的形式调用,this就是调用方法的那个对象
var name='si'
function fun(){
// console.log(name) //'si'
console.log(this.name)
}
fun(); //this->window
var obj = {
name:'san',
getName:fun
}
obj.getName(); //this->obj
1. 箭头函数没有自己的this, 箭头函数的this不是调用的时候决定的,而是在定义的时候所处的对象就是它的this
2. 判断方法:
看箭头函数的外层是否有函数:
如果有,外层函数的this就是内部箭头函数的this
如果没有,则this只window
let obj = {
name:'arrow',
getName: function(){
btn.onclick = () =>{
console.log(this);
}
}
}
obj.getName(); // this->obj
let obj = {
name:'arrow',
getName:() =>{
btn.onclick = () =>{
console.log(this);
}
}
}
obj.getName(); // this->window
网友评论