Хотите верьте, хотите нет, 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;
}
Попробуйте это:
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();
Вы можете увидеть это вживую и в действии на этой ручке .
Наслаждайтесь!
После вашего примера кода вы можете сделать это:
for (var i in Class) {
SomeClass[i] = Class[i];
}
, чтобы скопировать статические элементы из Class
в SubClass
.
Если вы используете jQuery, взгляните на плагин jQuery.Class из JavaScriptMVC . Или вы можете расширить Simple JavaScript Inheritance Джона Ресига для более библиотечно-независимой системы.
Как вы реализуете «статические» методы? Поскольку в JavaScript нет нативной объектной модели класса / экземпляра, все зависит от того, как вы спроектировали свою собственную систему классов.
Если вы хотите иметь возможность наследовать что-либо, он должен использовать объект SomeClass.prototype
, а не помещать что-либо непосредственно в функцию-конструктор SomeClass
. По сути, вы будете определять статические методы как обычные методы экземпляров, но те, которые не заботятся о том, какое значение this
передается в них.