Условные методы в классеJavascript

Форум по Javascript
Ответить
Anonymous
 Условные методы в классе

Сообщение Anonymous »

Предположим, у меня есть следующая структура классов JavaScript

Код: Выделить всё

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
До этого момента все отлично. Однако мне нравится использовать следующий псевдокод (обратите внимание на изменения в Class1):

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»