diff --git a/lab11/student.js b/lab11/student.js new file mode 100644 index 0000000..91f9429 --- /dev/null +++ b/lab11/student.js @@ -0,0 +1,59 @@ +/* +Create a 'Student' constructor, like we did for Cat in class. +It should have the following fields: +*firstName +*lastName +*studentID +*display -- A function that prints out the firstName, lastName, and studentID number. + To invoke it, you should call `student.display()`. + +Create an array of new students. +Add a 'graduated' property to just one of your students. + +Now create another student **without** using the constructor. +(In other words, use the object literal `{}` syntax). +Set the prototype chain manually using the __proto__ field. +Make sure the display method still works (without you having to add it to the object explicitly). +*/ + +// Create a Student constructor +function Student(firstName, lastName, studentID) { + this.firstName = firstName; + this.lastName = lastName; + this.studentID = studentID; +} + +// Add the display method to the prototype +// Manual student doesn't work if display is defined in the constructor +Student.prototype.display = function () { + console.log(`${this.firstName} ${this.lastName}, ID: ${this.studentID}`); +}; + +var students = [ + new Student("John", "Smith", "12345"), + new Student("Jane", "Doe", "67890"), + new Student("Alice", "Johnson", "11111"), +]; + +// Add a 'graduated' property to just one of the students +students[0].graduated = true; + +// Student without using the constructor (object literal syntax) +var manualStudent = { + firstName: "Bob", + lastName: "Wilson", + studentID: "99999", + __proto__: Student.prototype, +}; + +// Test +console.log("Students created with constructor:"); +students.forEach(function (student) { + student.display(); + if (student.graduated) { + console.log("This student has graduated!"); + } +}); + +console.log("\nManual student with prototype:"); +manualStudent.display();