一般函数this指向问题
1.全局作用域的指向 window
2.只有在函数调用的时候this指向才确定,不调用的时候不知道指向谁
3.this指向和函数在哪里调用没有关系,只和谁在调用有关
下面为具体实例
<script>
//指向window
console.log(this)
</script>
function add(){
console.log(this)
}
add()//没有任何人调用指向undefined到最后指向window
const cacl={
add:add//add为上面的函数}
cacl.add()//this指向cacl对象
const haha=cacl.add;
haha()//严格模式下this指向undefined,在非严格模式下,this指向window
document.onclick=function(){
console.log(this)//this指向document
}
箭头函数this指向
箭头函数没有自己的this指向,只能通过作用域向外找
下面为具体实例
cosnt calcu={
add:()=>{console.log(this)}
}
calcu.add()//this指向window,因为箭头函数没有this指向,跳到外层作用域去寻找,外层的calcu不是作用域,所以最后为window作用域
const lu={
add:function(){
const adder=()=>{
console.log(this)}
}
adder();
}
lu.add()//this指向lu,因为调用的adder为箭头函数,没有作用域,向外层寻找,到add里面的函数域,函数域指向对象lu,所以最终指向lu