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回答

好帮手慕久久

2020-11-10

同学你好,问题解答如下:

call可以改变this的指向,但是箭头函数中没有自己的this,它的this是自己所处环境中的this。由于函数foo不是箭头函数,所以它里面的是有this的,foo.call({id:1})这句代码会将foo内的this指向{id:1};而foo内部的其他函数,都是箭头函数,它们自身没有this,因此调用call方法后,对this不影响,它们的this依旧是foo中的this,所以都打印1。

祝学习愉快!

1

0 学习 · 10739 问题

查看课程