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
相关产品推荐
相关产品推荐

