全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

this的指向和改变方向

发布时间:2022-07-28 15:06:44
发布人:syq

  1.普通函数调用this的指向window

this的指向和改变方向22

this的指向和改变方向23

  这里this指向的是window

  2.构造函数调用, 此时 this 指向 实例对象

this的指向和改变方向68

this的指向和改变方向69

  这里的this 指向的就是let的 两个实例对象p1和p2

  3.对象方法调用, 此时 this 指向 该方法所属的对象

this的指向和改变方向131

this的指向和改变方向132

  4.箭头函数中this没有明确指向,会向上一级(宿主对象)寻找

this的指向和改变方向166

  5.通过事件绑定的方法, 此时 this 指向 绑定事件的对象

this的指向和改变方向200

this的指向和改变方向201

  6.定时器中this指向的也是window

this的指向和改变方向225

this的指向和改变方向226

  当this碰到return时 又产生什么呢?

  再看一个

this的指向和改变方向251

  再来

this的指向和改变方向258

this的指向和改变方向263

  什么意思呢?

  如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。

  还有一点就是虽然null也是对象,但是在这里this还是指向那个函数的实例,因为null比较特殊。

this的指向和改变方向264

  知识点补充:**

  1.在严格版中的默认的this不再是window,而是undefined。

  二、更改this指向的三个方法

  1.call() 方法

this的指向和改变方向461

this的指向和改变方向462

  没错,就像上面说的,普通函数的this指向window,现在让我们更改this指向

this的指向和改变方向506

this的指向和改变方向507

  2. apply()

this的指向和改变方向520

  apply方法和call方法有些相似,它也可以改变this的指向,也可以有多个参数,但是不同的是,第二个参数必须是一个数组,如下:

this的指向和改变方向588

  **

  //注意如果call和apply的第一个参数写的是null,那么this指向的是window对象

this的指向和改变方向642

  3.bind()**

  bind方法和call、apply方法有些不同,如下

this的指向和改变方向682

  我们发现代码没有被打印,对,这就是bind和call、apply方法的不同,实际上bind方法返回的是一个修改过后的函数。

this的指向和改变方向746

  函数c看看,能不能打印出对象a里面的user

this的指向和改变方向771

  同样bind也可以有多个参数,并且参数可以执行的时候再次添加,但是要注意的是,参数是按照形参的顺序进行的。

this的指向和改变方向827

  总结: call和apply都是改变上下文中的this并立即执行这个函数,bind方法可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加,这是它们的区别。

  更多关于“前端培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

  注:本文部分文字和图片来源于网络,如有侵权,请联系删除。版权归原作者所有!

 

相关文章

云快照与自动备份有什么区别?

云快照与自动备份有什么区别?

2023-10-14
OKR与自驱力的关系是什么?

OKR与自驱力的关系是什么?

2023-10-14
office是什么软件类型?

office是什么软件类型?

2023-10-14
Cloud-IDE 是什么?

Cloud-IDE 是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取