HarmonyOS 如何获取对象的方法列表

注入JavaScript 对象到window 对象案例中,registerJavaScriptProxy 的methodList 需要传对象的方法数组。但如果这个对象的业务有100个方法,传参将会非常冗余。有类似获取对象的所有方法列表的api吗?

HarmonyOS
2024-09-05 12:43:06
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

可参考以下代码:

// xxx.ets 
import web_webview from '@ohos.web.webview'; 
import business_error from '@ohos.base'; 
 
function getMethods(classInstance: ESObject): string[] { 
  return Object.getOwnPropertyNames(classInstance.prototype).filter(name => 
  typeof classInstance.prototype[name] === 'function' && name !== 'constructor'); 
} 
 
class WebObj { 
  constructor() { 
  } 
 
  webTest(): string { 
    console.log('Web test'); 
    return "Web test"; 
  } 
 
  webString(): void { 
    console.log('Web test toString'); 
  } 
} 
 
@Entry 
@Component 
struct WebComponent { 
  controller: web_webview.WebviewController = new web_webview.WebviewController() 
  @State webTestObj: WebObj = new WebObj(); 
 
  build() { 
    Column() { 
      Button('refresh') 
        .onClick(() => { 
          try { 
            this.controller.refresh(); 
          } catch (error) { 
            let e: business_error.BusinessError = error as business_error.BusinessError; 
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`); 
          } 
        }) 
      Web({ src: '', controller: this.controller }) 
        .javaScriptAccess(true) 
        .onControllerAttached(() => { 
          const methodList = getMethods(WebObj) as string[] 
          console.log(JSON.stringify(methodList)) 
          this.controller.loadUrl($rawfile("index.html")); 
          this.controller.registerJavaScriptProxy(this.webTestObj, "objTestName", methodList); 
        }) 
    } 
  } 
}
分享
微博
QQ
微信
回复
2024-09-05 16:34:50
相关问题
如何获取对象所有方法
311浏览 • 1回复 待解决
ArkTS层获取对象所有方法
1376浏览 • 1回复 待解决
如何获取对象真实类型
354浏览 • 1回复 待解决
new 出来对象如何获取所属类
1834浏览 • 1回复 待解决
ArkTs中如何获取对象类名
2420浏览 • 1回复 待解决
HarmonyOS如何获取对象所有的值和value
839浏览 • 1回复 待解决
鸿蒙中如何获取context对象
9183浏览 • 1回复 待解决
如何通过key获取对象
249浏览 • 1回复 待解决
HarmonyOS对象转换成字符串方法
431浏览 • 1回复 待解决
如何获取对象唯一标识(Hash值)
399浏览 • 1回复 待解决
如何获取wifi列表,有人知道吗?
437浏览 • 1回复 待解决
求大佬告知如何获取对象类名
619浏览 • 1回复 待解决
在Native侧释放ArkTS对象方法
356浏览 • 1回复 待解决
获取DeviceToken方法
251浏览 • 1回复 待解决