相关问题
#鸿蒙通关秘籍#如何在ArkTS中配置build-profile.json5文件的arkOptions中的types字段?
655浏览 • 1回复 待解决
我现在有一个MP4文件想要播放,怎么快速实现mp4文件的播放?
649浏览 • 1回复 待解决
ArkUI中如何获取mp4文件的第一帧图片?
6034浏览 • 1回复 待解决
如何创建一个ArkTS应用的项目?
611浏览 • 1回复 待解决
HarmonyOS OH系统的实际文管系统应该对应哪个路径?
468浏览 • 1回复 待解决
金融类的智能手表App,个人开发者该如何过审??(终于搞懂了手表负一屏消息)
9096浏览 • 1回复 待解决
HarmonyOS 加密长文本,如何动态获取密文
833浏览 • 1回复 待解决
ArkTS注册后,C++启动的业务线程收到消息通知ArkTS层的一种思路
1274浏览 • 1回复 待解决
HarmonyOS SM2非对称加密生成ASN.1密文转C1C3C2标准密文出错
508浏览 • 1回复 待解决
ArkTs怎么实现扫一扫功能?
5421浏览 • 1回复 待解决
ArkTS如何实现一个底部弹窗?
1323浏览 • 1回复 待解决
arkTs如何获取视频第一帧图片?
1612浏览 • 2回复 待解决
HarmonyOS ARKTS怎么获取一个对象在内存中的地址,或者唯一值也行
446浏览 • 1回复 待解决
HarmonyOS Arkts中如何打印出一个对象的指针地址
567浏览 • 1回复 待解决
HarmonyOS生成的SM2密文服务端无法解析
328浏览 • 1回复 待解决
HarmonyOS 蒙文显示的是竖直从上到下显示文案
452浏览 • 1回复 待解决
HarmonyOS 如何在ts文件里面import ArkTS的一些能力
460浏览 • 1回复 待解决
问一下 ArkTS中math库是哪一个?
3941浏览 • 2回复 待解决
HarmonyOS Web组件加载本地H5文件跨域
585浏览 • 1回复 待解决
HarmonyOS如何从麦克风录制mp3文件
1289浏览 • 1回复 待解决
HarmonyOS 签名文件.p12文件的指纹能否在API里边拿到
374浏览 • 1回复 待解决
现在HarmonyOS打包签名的密码加密方式,密文密码是否可以公开?
609浏览 • 1回复 待解决
HarmonyOS 如何用AVSession播放rawfile里的mp3文件
445浏览 • 1回复 待解决
如何在Native侧构建一个ArkTS对象
2660浏览 • 1回复 待解决
this、this、this......各种this指向傻傻分不清?本文就带你搞清楚ArkTS中各类this的用法。首先我们先看一段代码:
上述代码本来想通过传递事件回调来实现数据的双向流动(本例只是为了说明问题,实际建议使用@Link来实现数据双向流动)。但是运行上述代码会发现,无论是点击INCR还是DECR按钮,都不会触发界面的更新。
为什么会出现这种情况呢?因为上述代码涉及到一个很坑的知识点:
this指向问题!
显示绑定
首先,我们知道在JavaScript中,可以通过call、apply和bind来指定实现体中的this指向。这一过程,我们称之为
显示绑定。
隐式绑定
但函数直接通过圆括号()进行调用执行,又会发生什么事情呢?用一段代码简单地说明一下:
是不是很疑惑,为什么位置1可以正常输出user.name,而位置2输出的就是undefined了?
这是因为上述代码在执行过程中,触发了this的隐形绑定:
这也就解释了为什么位置2位输出的name值是undefined了。
bind(this)解决this指向问题
箭头函数解决this指向问题
bind(this)虽然可以解决问题,但是每次传递函数回调时都要bind一下,太麻烦了。而且每次bind都会产生一个新的函数,开销上也比较浪费。
所以,我们可以考虑利用箭头函数的特性(箭头函数体内的this对象,就是定义
该函数时所在的作用域指向的对象,而不是使用时所在的作用域指向的对象。)来解决this指向问题。
引申思考
执行上述代码,思考点击INCR或DECR按钮是否会触发界面更新?
不会,而且还会JS Crash!
click事件回调时触发隐式绑定,将事件回调函数中的this绑定成unedefined,而我们尝试去访问undefined上的属性,就会触发JS Crash。解决方式与前一个示例相同。