相关问题
ArkUI中如何获取mp4文件的第一帧图片?
5283浏览 • 1回复 待解决
HarmonyOS 加密长文本,如何动态获取密文
310浏览 • 1回复 待解决
金融类的智能手表App,个人开发者该如何过审??(终于搞懂了手表负一屏消息)
8642浏览 • 1回复 待解决
HarmonyOS如何从麦克风录制mp3文件
625浏览 • 1回复 待解决
现在HarmonyOS打包签名的密码加密方式,密文密码是否可以公开?
98浏览 • 1回复 待解决
ArkTs怎么实现扫一扫功能?
4549浏览 • 1回复 待解决
ArkTS注册后,C++启动的业务线程收到消息通知ArkTS层的一种思路
784浏览 • 1回复 待解决
HarmonyOS image组件是否支持展示点九文件
243浏览 • 1回复 待解决
arkTs如何获取视频第一帧图片?
894浏览 • 2回复 待解决
ArkTS如何实现一个底部弹窗?
622浏览 • 1回复 待解决
如何在Native侧构建一个ArkTS对象
2014浏览 • 1回复 待解决
HarmonyOS napi C++侧怎么通过一个“ClassName” 初始化一个ArkTS的对象
247浏览 • 1回复 待解决
问一下 ArkTS中math库是哪一个?
2956浏览 • 2回复 待解决
json5文件是否支持编码进行某些条件控制?
167浏览 • 1回复 待解决
el1与el2文件是否有区别
679浏览 • 1回复 待解决
谁能告知一下ArkTS相关知识点总结,
1125浏览 • 1回复 待解决
怎么在代码中获取oh-package.json5文件中version字段的值?
2326浏览 • 0回复 待解决
ArkTS里的数据类型转换方法有哪些?和TS是一致的吗
2506浏览 • 1回复 待解决
audioPlayer.src怎设置media里面的mp3文件
2401浏览 • 1回复 待解决
ArkTs开发如何弹出一个页面效果类似iOS的present效果?
2093浏览 • 1回复 待解决
ArkTS中如何生成一个指定范围内的随机数?
835浏览 • 1回复 待解决
什么是 ArkTS?ArkTS的定义及基本概念
24浏览 • 0回复 待解决
如何获取设备ID以及oh-package.json5文件中version字段、包名等基础信息?
1908浏览 • 1回复 待解决
ArkTS中Stack控件中子控件的位置设置规则是什么?设置一样的宽高无法显示到一起
151浏览 • 1回复 待解决
鸿蒙应用开发arkts语言如何获取设备唯一标识?
4117浏览 • 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。解决方式与前一个示例相同。