0

我有一个学生,他参加了很多课程,每门课程都有很多模块。

到目前为止,我得到了:

var myStudent = new MySchool.Student("Bart", "Simpson", "0800 Reverse", "Some Street", "Springfield");

myStudent.addCourse(new MySchool.Course("S1000", "Skateboarding"));
myStudent.addCourse(new MySchool.Course("Q1111", "Driving"));
myStudent.addCourse(new MySchool.Course("D999", "Avoiding Detention"));

学生.JS

MyStudent.Student = function (firstName, lastName, tel, address1, address2) {
    this._firstName = firstName;
    this._lastName = lastName;
    this._tel = tel;
    this._address1 = address1;
    this._address2 = address2;
    this._courses = new Array();

};

//Add course:
addCourse: function (course) {
    this._courses.push(course);
},

这工作正常。但是,我想为此添加模块。因此,每门课程都有多个模块。

我尝试过执行多维数组,但没有成功。

有人可以建议吗?有替代方案吗?

4

3 回答 3

1

不完全确定您的意思,但据我了解,您可以这样做:

MyStudent.Student = function (firstName, lastName, tel, address1, address2) {
    this._firstName = firstName;
    this._lastName = lastName;
    this._tel = tel;
    this._address1 = address1;
    this._address2 = address2;
    this._courses = [];

    this.addCourse =  function (course) {
        this._courses.push(new Course(course));
    };
};


//Add course:

MySchool.Module = function(name){
    this.name = name;
}

MySchool.Course = function(name) {

    this.name = name;
    this.modules = [];

    this.addModule = function(name) {
        this.mmodules.push(new MySchool.Module(name));
    }
}

这样,您可以创建一个具有函数 addCourse 的学生。然后你添加你想要的任何课程,并且对于每门课程,你都有一个 addModule 函数来用模块填充它们。

您可以做一些更复杂的事情,例如创建一个学生,该学生将课程/模块数组作为参数,如下所示:

courses = [
    "poney" : [
        "ride",
        "jump"
    ],
    "english" : [
        "oral",
        "grammar",
        "written"
    ]
]

然后创建一个循环遍历数组的函数,并使用 addCourse 和 addModule 函数为您的学生填充他的课程/模块。但是当您开始使用 JS 时,也许您更喜欢简单的解决方案。

于 2012-11-21T17:02:30.753 回答
0

这样做的 OO 方法是modules在你的课程中有一个数组,因为模块属于课程。然后您可以直接将模块添加到课程中

于 2012-11-21T17:00:17.600 回答
0

这是快速和肮脏的:

addCourse: function (course) {
    course.modules = [];
    course.addModule = function(module){
        this.modules.push(module);
    }
    this._courses.push(course);
    return course;
}

可以这样使用:

myStudent.addCourse(new MySchool.Course("S1000", "Skateboarding")).addModule(...);

当然,最好的方法是在Course构造函数中处理所有这些,您还没有向我们展示。

于 2012-11-21T17:06:54.353 回答