You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript中如何为已有Person父类实例创建DD子类实例?

解决方法

首先你的类继承代码存在问题:ES6子类构造函数必须调用super()来初始化父类的this,否则会抛出错误。先修正类的定义:

class Person{
  constructor(name){
    this.name = name;
  }
}

class Financial extends Person{
  // 新增name参数,传递给父类构造函数
  constructor(name, salary){
    super(name);
    this.salary = salary;
  }
}

// demand and debt class
class DD extends Financial{
  // 新增name、salary参数,传递给父类Financial
  constructor(name, salary, amount){
    super(name, salary);
    this.amount = amount;
  }
}
let jack = new Person('jack');

基于已有的jack实例创建DD实例,有两种可行方式:

  • 推荐方式:提取实例属性,传入DD构造函数
    因为jack是Person实例,仅包含name属性,创建DD实例时需要补充业务所需的salary(收入)和amount(收支金额):
// 根据jack的name创建DD实例,salary和amount按实际业务赋值
const jackDD = new DD(jack.name, 8000, 1500);
  • 不推荐方式:修改原实例的原型链
    直接将jack的原型改为DD的原型,再补充缺失的属性。这种方式会修改原实例的类型,可能影响依赖Person实例的其他代码:
// 修改jack的原型链,使其成为DD实例
Object.setPrototypeOf(jack, DD.prototype);
// 补充Financial和DD类的属性
jack.salary = 8000;
jack.amount = 1500;

内容的提问来源于stack exchange,提问作者Mostafa Saleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:52:37