JavaScript中如何从子类实例获取父类对象?
从子类实例中提取父类属性对象的方法
针对你的场景,有几种实用的方法可以从b1中提取出{a:1, b:2}:
方法一:手动提取已知属性
如果父类A的属性固定且明确,直接构造目标对象即可:
const aData = { a: b1.a, b: b1.b }; // 结果:{a:1, b:2}
方法二:基于父类实例动态提取
如果父类A的属性可能变动,这种方法更灵活,无需硬编码属性名:
// 创建父类A的空实例 const aProto = new A(); // 遍历A实例的所有自有属性,从b1中取值 const aData = Object.fromEntries( Object.keys(aProto).map(key => [key, b1[key]]) ); // 结果:{a:1, b:2}
方法三:在父类中添加转换方法
在A类里定义专门方法返回自身属性对象,子类继承后直接调用:
class A { constructor() { this.a = 1; this.b = 2; } // 添加转换方法 toAObject() { return { a: this.a, b: this.b }; } } class B extends A { constructor() { super(); this.c = 3; } } // 使用时直接调用方法 const aData = b1.toAObject(); // 结果:{a:1, b:2}
若A的属性较多,可优化toAObject方法避免逐个编写属性:
toAObject() { const aProto = new A(); return Object.fromEntries( Object.keys(aProto).map(key => [key, this[key]]) ); }
内容的提问来源于stack exchange,提问作者Courage
相关产品推荐
相关产品推荐

