evgenyspace
@evgenyspace
Исследователь

Как работает наследование статических методов в ES6?

Тестирую тут классы и возник вопрос. С наследованием свойств все ясно, методов тоже. А что с наследованием статических методов?
cp.staticMethodTest() выдаёт ошибку, ок, вроде так и должно быть - мы не разрешаем передачу этого метода, верно?
А почему тогда cp.staticFuckingMethodTest() ошибку не выдаёт? Зачем так придумали?

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    simpleMethod() {
    	return `I am a Simple Method: (${this.x}, ${this.y})`;
    }
    static staticMethod() {
    	return `I am a Static Method: (${this.x}, ${this.y})`;
    }
}

class ColorPoint extends Point {
    constructor(x, y) {
    	super(x, y);
    }
    simpleMethodTest() {
    	return super.simpleMethod();
    }
    staticFuckingMethodTest() {
    	return ColorPoint.staticMethod(); 
    }
    staticMethodTest() {
    	return super.staticMethod(); 
    }
}

let cp = new ColorPoint(1, 0);
console.log(cp.simpleMethodTest());
console.log(cp.staticFuckingMethodTest());
console.log(cp.staticMethodTest());
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
А что конкретно вас не устраивает?
Ведь вы вызываете статический метод так, как его и нужно вызывать, т.е. не у экземпляра класса. Все условия выполнены.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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