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"));

Student.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

モジュールはコースに属しているため、これを行うオブジェクト指向の方法は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 に答える