HarmonyOS 自定义装饰器的this指向问题

自定义一个装饰器,在调用原函数的时候由于ArkTS只能使用箭头函数并且不能使用call、apply等,导致函数内部的this指向有问题。

HarmonyOS 自定义装饰器的this指向问题 -鸿蒙开发者社区HarmonyOS 自定义装饰器的this指向问题 -鸿蒙开发者社区

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

目前提供建议如下:

1、this在自定义装饰器方法下undefine,可以直接通过getContext()获取到当前context无需传参。

2、目前支持Function.bind(thisArg, …args)手动指定this指向,也可以将自定义装饰器放在ts文件中规避此问题,参考示例如下:

// CatchCommonErrors.ts文件
export function CatchCommonErrors(): Function {
  return (target: Object, propertyName: string, propertyDescriptor: PropertyDescriptor) => {
    const method = propertyDescriptor.value;

    propertyDescriptor.value = function (...args: any[]) {
      const result = method.apply(this, args);
      console.log(`Call: ${propertyName}`);
      return result;
    }
    return propertyDescriptor
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
自定义装饰使用问题
832浏览 • 1回复 待解决
HarmonyOS 怎么自定义装饰
35浏览 • 1回复 待解决
是否支持自定义装饰
2131浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰
272浏览 • 1回复 待解决
ArkTS是否支持自定义装饰
2529浏览 • 1回复 待解决
HarmonyOS ArkTS 如何实现自定义装饰
66浏览 • 1回复 待解决
HarmonyOS 自定义装饰不能作用于ets
506浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
728浏览 • 1回复 待解决
HarmonyOS 装饰问题class
37浏览 • 1回复 待解决
HarmonyOS 自定义视频控制
31浏览 • 1回复 待解决
HarmonyOS 关于组件装饰问题
14浏览 • 1回复 待解决
HarmonyOS this指向问题
29浏览 • 1回复 待解决