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
  }
}
分享
微博
QQ
微信
回复
2024-12-25 14:20:18
相关问题
自定义装饰使用问题
952浏览 • 1回复 待解决
HarmonyOS 怎么自定义装饰
195浏览 • 1回复 待解决
HarmonyOS 能否自定义自己装饰
234浏览 • 1回复 待解决
是否支持自定义装饰
2274浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰
387浏览 • 1回复 待解决
ArkTS是否支持自定义装饰
2757浏览 • 1回复 待解决
HarmonyOS ArkTS 如何实现自定义装饰
188浏览 • 1回复 待解决
HarmonyOS 自定义装饰不能作用于ets
736浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
919浏览 • 1回复 待解决
HarmonyOS this指向问题
118浏览 • 2回复 待解决