Я хотел бы создать класс в JavaScript, который позже будет расширен несколькими подклассами.
Мне удалось создать замыкание для того, что мне нужно, но, поскольку код растет все больше и больше, становится запутанным иметь один огромный файл.
Допустим, у меня есть человек.
Человек может быть студентом, футболистом, ...
Но человек может быть и студентом, и футболистом.
У меня есть рабочее закрытие, которое может представлять это:
var jack = (
function() {
var name = jack;
var age = 24;
return {
student: function() {
var subject = 'computer science'
return {
driveToUniversaty: function() {
// drive for a while...
},
study: function() {
// read books and stuff...
},
}
},
footballPlayer: function() {
var footballClub = 'unbeatable lions'
return {
driveToFootballTraining: function() {
// drive for a while in a different direction...
},
playFootball: function() {
// kick a ball with the guys
},
}
},
}
}
)();
Теперь я пытался добиться этого с помощью классов js. Это основа:
class Person {
constructor(name, age) {
this.name = name
this.age = age
}
}
Из того, что я знаю, у меня есть два варианта, как-то расширить этот класс.
A:
Person.prototype.driveToUniversaty = function() {
// drive for a while...
}
Person.prototype.study = function() {
// read books and stuff...
}
Person.prototype.driveToFootballTraining = function() {
// drive for a while in a different direction...
}
Person.prototype.playFootball = function() {
// kick a ball with the guys
}
В этом случае будет отсутствовать дальнейшая группировка действий.
B:
class Student extends Person {
// do whatever a student does
}
class FootballPlayer extends Person {
// do whatever a footballPlayer does
}
В этой опции не будет возможности назначить более одного вида деятельности человеку.
Есть ли способ создать столько подклассов, сколько мне нравится для определенного объекта?
Теперь я разделил замыкание на несколько файлов и разместил их на сервере в соответствии с тем, какие «действия» мне нужны.
Но мне не нравится это решение.
Заранее спасибо
Андре