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

React前置作业:ES6对象构造函数实现问题求助

问题分析与代码修正

你的问题核心在于错误地让Order类继承了Client类,这直接导致Order实例继承了Client的name和orders属性,同时构造函数里的super(client)把整个client对象传给了Client的构造函数,使得Order的name变成了Client实例而非预期的字符串。

按照作业要求,Order应该是一个独立的类,仅包含client和number两个属性,无需继承Client。以下是修正后的代码:

class Client {
  constructor(name) {
    this.name = name;
    this.orders = [];
  }

  addOrder(order) {
    this.orders.push(order);
  }
}

// 移除继承关系,Order作为独立类存在
class Order {
  constructor(client, number) {
    this.client = client; // 直接赋值传入的client实例
    this.number = number;
  }
}

const client1 = new Client("John");
const order1 = new Order(client1, "1");
const order2 = new Order(client1, "2");

client1.addOrder(order1);
client1.addOrder(order2);

console.table(client1.orders);

修正后输出

Array(2)
0: Order {client: Client {name: 'John', orders: Array(2)}, number: '1'}
1: Order {client: Client {name: 'John', orders: Array(2)}, number: '2'}

这样Order实例不再包含多余的name和orders属性,且通过client.name可以访问到John,完全符合作业要求。

内容的提问来源于stack exchange,提问作者Michael Sadowski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:25:26