请教关于HarmonyOS鸿蒙Next中this的指向性问题
请教关于HarmonyOS鸿蒙Next中this的指向性问题 我的项目里面,需要使用对控件截图生成图片,进行触发的时候,
如果是在Image的onClick事件里面使用:
this.getUIContext().getComponentSnapshot().createFromBuilder(()=>{this.RandomBuilder()},
是有效的 。
如果是在自定义的组件里面使用,
Column() {
CommonHeader({
startShare(){
console.log('ssss开始分享'+this.getUIContext())
// // 建议使用this.getUIContext().getComponentSnapshot().createFromBuilder()
// this.getUIContext().getComponentSnapshot().createFromBuilder(()=>{this.RandomBuilder()},
此时就会报错。
请问在鸿蒙里面,this
是如何指向的。
更多关于请教关于HarmonyOS鸿蒙Next中this的指向性问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
具体原因是,一个方法用了箭头函数,一个没用,导致this
指向了不同的上下文,箭头函数是在定义的时候就确定了this
指向,常规函数的话,是在运行的时候确定。具体this
的指向内容可以参考链接。
更多关于请教关于HarmonyOS鸿蒙Next中this的指向性问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
箭头函数还有这个隐藏的含义呀。
基本信息:
- 箭头函数提供了一个更短的语法
- 箭头函数可以捕获其所在上下文的this值,而不是自己定义自己的this值
优点:
- 使得代码更加简洁
- this的绑定不可改
你好。
因为直接使用componentSnapshot可能导致实例不明确的问题,所以建议使用getUIContext获取UIContext实例,并使用getComponentSnapshot获取绑定实例的componentSnapshot。
就是你举例的这种方式:
this.getUIContext().getComponentSnapshot().createFromBuilder(()=>{this.RandomBuilder()},
因为你的第二部分代码示例不全。初步推测是你的自定义组件回调的作用域有点问题。
在HarmonyOS鸿蒙Next中,this
的指向性与JavaScript中的规则一致。在普通函数中,this
指向调用该函数的对象;在箭头函数中,this
继承自外层作用域。在类方法中,this
指向当前实例。开发者需注意函数调用方式,避免this
指向错误。