Я хочу реализовать множественное наследование с помощью закрытия Google. Я уже провел исследование и нашел эту книгу. На странице 158 говорится, что закрытие Google не поддерживает множественное наследование, но есть другие способы сделать это, например, с помощью «goog.mixin». Я пробовал, но получаю "Uncaught AssertionError: Failure".
В принципе, я хочу сделать что-то вроде этого:
class A {
function moveLeft() {
...
},
function moveRight() {
...
}
}
class B extends A {
function moveTop() {
...
}
}
class C extends B {
function moveBottom() {
...
}
}
- Класс A имеет методы «moveLeft» и «moveRight».
- Класс B имеет методы «moveLeft», «moveRight» И «moveTop» (обычное наследование, получает методы из родительского класса A)
- Класс C должен иметь методы "moveLeft", "moveRight", "moveTop" И "moveBottom" (двойное наследование, получение методов из родительского класса B и родительского класса A)
НО класс C получает только методы класса B так, как это делаю я.
Как я могу сделать это, используя закрытие Google?
Спасибо.
João
ИЗМЕНИТЬ 1
Я постараюсь сделать себя яснее. Я не могу показать здесь весь код по профессиональным причинам. Примерно так выглядят мои занятия.
// external file xgis.js
xgis = {};
// xgis.map
xgis.map = function(options) {
// map definitions ...
};
// Inherits from ol.Map
goog.inherits(xgis.map, ol.Map);
// xgis.layer
xgis.layer = function(options) {
// base layer definitions
};
// xgis.layer.osm
xgis.layer.osm = function(options) {
goog.base(this, {
source: new ol.source.OSM()
});
sigga.layer.call(this, options);
};
// Inherits from ol.layer.Tile
goog.inherits(xgis.layer.osm, ol.layer.Tile);
/**
* Copies all the members of a source object to a target object.
* i.e, inherits ALSO from xgis.layer (the base layer class)
*/
goog.mixin(xgis.layer.osm.prototype, xgis.layer.prototype);
Цель состоит в том, чтобы создать SDK, который я назвал здесь «xgis». Мы хотим построить наш API поверх OpenLayers 3 (ol3). Мы хотим, чтобы наши собственные методы использовали методы ol3. Нам нужен собственный метод документирования.
Например, я хочу, чтобы мой собственный метод проверял видимость слоя. Но этот метод должен использовать метод из ol3 «с таким же именем, как у меня»:
// My method
xgis.layer.prototype.getVisible = function() {
// Used the method of the parent class from ol3
return this.superClass_.getVisible();
};
Я попытался использовать ключевое слово «superClass_», чтобы получить метод родительского класса, но это не сработало.
Есть ли другой способ?