Как наследовать статические методы из базового класса в JavaScript?

Хотите верьте, хотите нет, printf и друзья поддерживают позиционные параметры.

 #include <stdio.h>

 int main() {
   char *name = "Logan";
   int age = 25;
   printf("Hi there %1$s, you are %2$d years old. How does it feel to be %2$d?\n", name, age);
  return 0;
 }
28
задан Anders 26 April 2016 в 16:05
поделиться

3 ответа

Попробуйте это:

class BaseClass {
    static baseMethod () {
        console.log("Hello from baseMethod");
    }
}

class MyClass extends BaseClass {
    constructor(props) {
        super(props);
    }
}

Object.assign(MyClass, BaseClass);

Они ключ Object.assign, который должен быть новым лучшим другом каждого. Теперь вы можете вызывать любой базовый метод из BaseClass, используя MyClass, следующим образом:

MyClass.baseMethod();

Вы можете увидеть это вживую и в действии на этой ручке .

Наслаждайтесь!

7
ответ дан 28 November 2019 в 03:30
поделиться

После вашего примера кода вы можете сделать это:

for (var i in Class) {
    SomeClass[i] = Class[i];
}

, чтобы скопировать статические элементы из Class в SubClass.

Если вы используете jQuery, взгляните на плагин jQuery.Class из JavaScriptMVC . Или вы можете расширить Simple JavaScript Inheritance Джона Ресига для более библиотечно-независимой системы.

9
ответ дан 28 November 2019 в 03:30
поделиться

Как вы реализуете «статические» методы? Поскольку в JavaScript нет нативной объектной модели класса / экземпляра, все зависит от того, как вы спроектировали свою собственную систему классов.

Если вы хотите иметь возможность наследовать что-либо, он должен использовать объект SomeClass.prototype, а не помещать что-либо непосредственно в функцию-конструктор SomeClass. По сути, вы будете определять статические методы как обычные методы экземпляров, но те, которые не заботятся о том, какое значение this передается в них.

1
ответ дан 28 November 2019 в 03:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: