HarmonyOS 对方法使用装饰器方法内部的this引用会变成undefine

export function BRBridge(target: Object, key: string, descriptor: PropertyDescriptor) {
  const originalMethod: Function = descriptor.value
  descriptor.value = (...args: Object[]) => {
    let result: Function = originalMethod(...args)
    return result
  }
  return descriptor
}

// 使用场景是
export class CommonBridge {
  proxy: IWebViewControllerProxy;

  constructor(webviewControllerProxy: IWebViewControllerProxy) {
    this.proxy = webviewControllerProxy;
  }

  @BRBridge
  async getUserInfo(info: BrMethodInfo) {
    this.proxy.runJavaScript();
  }
}

因为装饰器中的target似乎并不是类的实例而是类构造器的实例,所以在实际调用中this被替换成了类构造器的实例,从而proxy成了undefine如何解决这种问题。

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

class不是一个对象是一个类,所以在这个类实例化之前是没有this的。

分享
微博
QQ
微信
回复
3天前
相关问题
应用卡片内部组件能使用装饰吗?
428浏览 • 1回复 待解决
ArkTs中异步方法如何转变成同步方法
2592浏览 • 0回复 待解决
HarmonyOS 引用找不到方法
414浏览 • 1回复 待解决
系统日历方法使用抛异常
581浏览 • 0回复 待解决
HarmonyOS 上架前内部测试方法
205浏览 • 1回复 待解决
Aspect工具装饰使用示例
2306浏览 • 2回复 待解决
自定义装饰使用问题
931浏览 • 1回复 待解决
HarmonyOS addAfter方法使用
249浏览 • 1回复 待解决
HarmonyOS AsyncCallback使用方法
1038浏览 • 1回复 待解决
getInspectorByKey方法使用
508浏览 • 1回复 待解决