猿问

如何在 JavaScript 中创建一个包含其他类集合的类

我想创建一个名为 SchoolCatalog 的类,它将包含学校的集合,例如为小学、初中和高中创建一个 SchoolCatalog 实例。(这是 Code Academy Introduction To JavaScript 中的问题之一)。但是,对于如何制作目录来容纳论坛中的所有课程,他们没有适当的指导。因此,如果有人可以帮助我,我将不胜感激。


class School {

  constructor(name, level, numberOfStudents) {

    this._name = name

    this._level = level

    this._numberOfStudents = numberOfStudents 

  }

  

  get name() {

    return this._name

  }

  

  get level() {

    return this._level

  }

  

  get numberOfStudents() {

    return this._numberOfStudents 

  }

  

  

  set numberOfStudents(studentsNumber) {

    if (typeof studentNumber === 'number')

      this._numberOfStudents = studentsNumber

    else

      console.log(`Invalid input: numberOfStudents must be set to a Number.`)

  }

  

  quickFacts() {

    console.log(`${this._name} educates ${this._numberOfStudents} students at the ${this._level} school level.`)

  }

  

  static pickSubstituteTeacher(substituteTeachers) {

    const randomTeacher = Math.floor(Math.random() * substituteTeachers.length)

    console.log(substituteTeachers[randomTeacher])

  }

  

}


// Primary School


class PrimarySchool extends School {

  constructor(name, numberOfStudents, pickupPolicy) {

    super(name, 'primary', numberOfStudents)

    this._pickupPolicy = pickupPolicy

  }

  

  get pickupPolicy() {

    return this._pickupPolicy

  }

}



class HighSchool extends School {

  constructor(name, numberOfStudents, sportsTeams) {

    super(name,'high', numberOfStudents)

    this._sportsTeams = sportsTeams

  }

  

  get sportsTeams() {

    this._sportsTeams.forEach(team => {

      console.log(team)

    })

  }

}

倚天杖
浏览 91回答 1
1回答

斯蒂芬大帝

您的实施有问题吗?class Catalog{   constructor(){     this.schools = []   }   addSchool(school){     if(!this[school._name]){       // reference for easy access       this[school._name]=school;     }     this.schools.push(school);   }}如果我需要一个列表,我可以遍历并且仍然可以轻松地从中获得单所学校,这就是我会做的,也就是说,根据您的要求,这可能是完全错误的。乍一看,您的实现看起来并不正确,是不是给您带来了错误?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答