У меня есть следующая цепочка прототипов
- SuperSuperClass
- SuperClass
- Class
- SuperClass
каждый с методом с именем do
.
Каков общий подход к вызову соответствующего метода суперкласса?
На данный момент я использую <ClassName>.prototype.__proto__.<methodName>.call(this)
, но это выглядит странно.
Используя следующий код, консоль печатает (как и ожидалось):
- Класс.prototype.do
- Суперкласс.prototype.do
- SuperSuperClass.prototype.do
SuperSuperClass = function SuperSuperClass() {}
SuperSuperClass.prototype.do = function() {
console.log('SuperSuperClass.prototype.do');
};
function SuperClass() {
SuperSuperClass.call(this);
}
SuperClass.prototype = Object.create(SuperSuperClass.prototype);
SuperClass.prototype.constructor = SuperClass;
SuperClass.prototype.do = function() {
console.log('SuperClass.prototype.do');
SuperClass.prototype.__proto__.do.call(this);
};
function Class() {
SuperClass.call(this);
}
Class.prototype = Object.create(SuperClass.prototype);
Class.prototype.constructor = Class;
Class.prototype.do = function() {
console.log('Class.prototype.do');
Class.prototype.__proto__.do.call(this);
};
var objClass = new Class();
objClass.do();