Код: Выделить всё
class Class1 {
constructor(version) {
this.version = version;
}
method1() {
console.log("Method 1 - Class 1");
}
}
class Class2 extends Class1 {
constructor(version) {
super (version);
}
method1 () {
super.method1();
console.log('Method 1 - Class 2');
}
}
const a = new Class2(version);
a.method1()
// The above line of code will output the following:
// Method 1 - Class 1
// Method 1 - Class 2
Код: Выделить всё
class Class1 {
constructor(version) {
this.version = version;
}
// this if condition is not a correct JavaScript syntax, but to convey the idea that I like to implement
if (this.version === 1) {
method1() {
console.log("Method 1 - Class 1");
}
}
else if (this.version === 2) {
method1() {
console.log("Method 1 - Class 1 - Version 2");
}
// Or I could even add new methods in version 2
method2() {
console.log("Method 2 - Class 1 - Version 2");
}
}
}
class Class2 extends Class1 {
constructor(version) {
super (version);
}
method1 () {
super.method1();
console.log('Method 1 - Class 2');
}
}
const a = new Class2(version);
a.method1()
// The above line of code will output the following:
// Method 1 - Class 1 - Version 2
// Method 1 - Class 2
P.S. Я знаю, что версия — это число, которое неверно. Это должно быть семантическое управление версиями, и здесь оно записано в виде числа, чтобы код было проще читать
P.S. 2. Ниже приведены комментарии, в которых спрашивают, почему бы мне не использовать условие внутри метода. Ответ на этот вопрос заключается в том, что объект в производстве (не в этом вопросе) намного сложнее, чем то, что объяснено в этом вопросе. Здесь я максимально упростил задачу, чтобы сосредоточиться только на рассматриваемой проблеме. Классы в рабочей среде содержат свойства со значениями по умолчанию. Экземпляры этих классов также можно создавать путем передачи объектов со значениями, переопределяющими значения по умолчанию. И если я передам «версию 1» объекта экземпляру «версии 2», тогда новый объект сможет работать с этими свойствами и использовать новые «методы версии 2».
Подробнее здесь: https://stackoverflow.com/questions/798 ... s-in-class
Мобильная версия