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

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

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

HarmonyOS
2024-12-25 12:49:11
浏览
收藏 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
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
分享
微博
QQ
微信
回复
2024-12-25 14:20:18
相关问题
自定义装饰使用问题
1522浏览 • 1回复 待解决
HarmonyOS 怎么自定义装饰
785浏览 • 1回复 待解决
是否支持自定义装饰
2897浏览 • 1回复 待解决
HarmonyOS 能否自定义自己装饰
860浏览 • 2回复 待解决
HarmonyOS 是否支持自定义装饰
1044浏览 • 1回复 待解决
ArkTS是否支持自定义装饰
3607浏览 • 1回复 待解决
HarmonyOS ArkTS 如何实现自定义装饰
832浏览 • 1回复 待解决
HarmonyOS 自定义装饰不能作用于ets
1476浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
1640浏览 • 1回复 待解决