HarmonyOS 鸿蒙Next 使用this.constructor.name无法获取到类名

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用this.constructor.name无法获取到类名

需求: 在运行时,获取当前类的类名  步骤: 使用this.constructor.name,无法获取  期望: 可以通过某种方式,获取类名

2 回复
class A {
  a:string = '';
  b:string = '';
}
let Aobj:A = new A();
console.log( 'object name:' + Aobj.constructor.name)

export class TA{
  a:string=""
  b:string=""
  getName(){
    return this.constructor.name
  }
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index{
  aboutToAppear(): void {
    let a : TA = new TA()
    console.log(a.getName())
  }
  build() {
  }
}

[@Observed](/user/Observed)修改原型链路,arkts拿不到原型,所以不行

在HarmonyOS鸿蒙Next的开发环境中,如果你发现使用this.constructor.name无法获取到类名,这可能是由于JavaScript引擎或鸿蒙系统对类的处理机制与传统Web环境有所不同。在JavaScript的某些实现中,尤其是在非浏览器环境下(如鸿蒙系统应用),constructor.name的行为可能不总是符合预期,特别是当涉及到编译或转译代码时。

这种情况可能源于类被编译或优化后的元数据丢失,或者鸿蒙系统对JavaScript执行环境的特定处理。解决这类问题的一种方法是尝试使用其他方式来获取类名,例如通过显式地在类中定义一个静态属性来存储类名,然后在实例中访问这个静态属性。

例如:

class MyClass {
    static className = 'MyClass';
    getClassName() {
        return MyClass.className;
    }
}

const instance = new MyClass();
console.log(instance.getClassName()); // 输出 'MyClass'

这种方法虽然绕过了this.constructor.name的限制,但提供了一种可靠的方式来获取类名。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部