В вашем следующем коде:
class Course {
constructor(title, author) {
this.title = title;
this.author = author;
}
}
Course.prototype.toString = function(arguments) {
console.log(this.title + "... Author: " + this.author);
};
var course_1 = new Course("Bootstrap 4", "Paul");
var course_2 = new Course("Design Patterns", "Paul");
course_1.toString();
course_2.toString();
Класс - это не что иное, как синтаксический сахар, который напоминает функциональность функции конструктора.Мы можем наблюдать это больше глубины в следующем примере:
class Person {
}
console.log(typeof Person);
Класс Person на самом деле является объектом функции конструктора.Как и обычные функции-конструкторы, мы можем расширить прототип, поместив свойства в объект-прототип.
Итак, в вашем примере:
Course.prototype.toString = function(arguments) {
console.log(this.title + "... Author: " + this.author);
};
То, что на самом деле происходит под капотом, заключается в том, что вы помещаете свойство toString в объект функции конструктора Course
.