HarmonyOS class对象赋值,打开局部方法会报错

class ClassA{
  func(){
    console.log("aaaa   this is func")
  }
}

@Entry
@Component
struct OutWareSettingPage {

  aboutToAppear(): void {

    let a:ClassA = new ClassA();
    a.func()
    let jsonA = JSON.stringify(a)
    console.log("aaaa   jsonA=" + jsonA)
    let a2:ClassA = JSON.parse(jsonA)
    a2.func()

  }
  build() {

  }
}

新new出来的对象ClassA的实例a可以调用局部方法func(),不会报错。但是如果把实例a序列化成json字符串,然后再把这个json字符串转换回对象实例,并赋值给a2。这个时候调用a2.func(),会报错。个人感觉是这个func()函数在a2这个实例里面不存在了。。。正常来说,把对象重新赋值是比较常见的做法,如果重新赋值就不能用里面的局部方法了,会不会不太友好。

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

JSON.parse() 方法返回的是一个普通对象,而不是 DataBean 类的实例。不包含类定义的任何方法。需要在将 JSON 数据转换为 DataBean 实例时,手动创建类的实例,并将 JSON 对象的属性赋值给类的实例。参考

class DataBean {
  code = -1;
  msg = '';

  isOK() {
    return this.code === 0;
  }

  // 静态方法,从 JSON 字符串创建 DataBean 实例
  static fromJson(jsonString: string): DataBean {
    const jsonData: ESObject = JSON.parse(jsonString);
    const dataBean = new DataBean();
    dataBean.code = jsonData.code;
    dataBean.msg = jsonData.msg;
    return dataBean;
  }
}
分享
微博
QQ
微信
回复
3天前
相关问题
HarmonyOS 定义对象赋值错误
24浏览 • 1回复 待解决
HarmonyOS JSON转换后调用对象方法报错
173浏览 • 1回复 待解决
HarmonyOS 数据模型对象赋值问题
49浏览 • 1回复 待解决
napi常见用法:class对象绑定
1160浏览 • 1回复 待解决
mysqldump导出oceanbase的表会报错
4706浏览 • 1回复 待解决
Checkstyle插件使用中为什么会报错
8393浏览 • 1回复 已解决
Map对象使用[]赋值,Map中的size不递增
499浏览 • 1回复 待解决
首选项存储问题,为什么会报错
294浏览 • 1回复 待解决