this指向问题
来源:5-7 选择练习
慕哥5103152
2020-11-10 09:20:04
# 具体遇到的问题
call()不是可以改变this指向吗
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script>
function foo(){
return ()=>{
return ()=>{
return ()=>{
console.log('id',this.id);
console.log(this)
};
};
};
}
var f=foo.call({id:1});
console.log(f)
var t1=f.call({id:2})()();//这里的this.id为什么是1不是2??
var t2=f().call({id:3})();//这里的this.id为什么是1不是3??
var t3=f()().call({id:4})//这里的this.id为什么是1不是4??
</script>
</body>
</html>
1回答
同学你好,问题解答如下:
call可以改变this的指向,但是箭头函数中没有自己的this,它的this是自己所处环境中的this。由于函数foo不是箭头函数,所以它里面的是有this的,foo.call({id:1})这句代码会将foo内的this指向{id:1};而foo内部的其他函数,都是箭头函数,它们自身没有this,因此调用call方法后,对this不影响,它们的this依旧是foo中的this,所以都打印1。
祝学习愉快!
相似问题