HarmonyOS 鸿蒙Next 使用this.constructor.name无法获取到类名
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。