如何在Movie类中实现addCast方法以添加单个或多个Actor实例?
实现Movie类的addCast方法方案
当然需要给Movie类添加actors属性啦!这个属性用来存储影片的演员列表,是实现addCast方法的核心基础。下面是具体的实现步骤:
1. 初始化演员列表属性
首先在Movie类的构造函数里添加actors数组,确保每个影片实例都有自己独立的演员列表:
class Movie{ constructor(name, year, duration){ this.name = name; this.year = year; this.duration = duration; // 初始化演员数组,专门存储Actor实例 this.actors = []; } }
2. 实现addCast方法
接下来给Movie类添加addCast方法,它需要支持两种传入方式:单个Actor实例,或者Actor实例组成的数组。我们可以通过判断参数类型来分别处理:
class Movie{ constructor(name, year, duration){ this.name = name; this.year = year; this.duration = duration; this.actors = []; } addCast(cast) { // 判断传入的是单个Actor实例还是数组 if (Array.isArray(cast)) { // 如果是数组,批量添加到actors列表中 this.actors.push(...cast); } else { // 如果是单个实例,直接添加 this.actors.push(cast); } } } class Actor{ constructor(name, age){ this.name = name; this.age = age; } }
3. 验证使用效果
现在你就可以按照预期的方式使用了:
// 创建演员实例 const arnold = new Actor("Arnold Schwarzenegger", 76); const linda = new Actor("Linda Hamilton", 67); const otherCast = [linda, new Actor("Michael Biehn", 67)]; // 创建影片实例 const terminator = new Movie("The Terminator", 1984, 107); // 添加单个演员 terminator.addCast(arnold); // 添加演员数组 terminator.addCast(otherCast); // 查看结果:会包含所有3个演员实例 console.log(terminator.actors);
如果想让方法更严谨,还可以加入类型校验,确保传入的都是有效的Actor实例:
addCast(cast) { // 定义内部方法,验证并添加单个Actor const addValidActor = (actor) => { if (actor instanceof Actor) { this.actors.push(actor); } else { console.warn(`传入的内容不是有效的Actor实例:${actor}`); } }; if (Array.isArray(cast)) { cast.forEach(addValidActor); } else { addValidActor(cast); } }
内容的提问来源于stack exchange,提问作者boludo kid




