我想使用google closure实现多重继承。我已经研究过了,我找到了book。在第158页,他们说谷歌关闭不支持多重继承,但还有其他方法可以做到这一点,比如使用“goog.mixin”。我尝试了但是我得到了“Uncaught AssertionError:Failure”。
基本上,我想做这样的事情:
class A {
function moveLeft() {
...
},
function moveRight() {
...
}
}
class B extends A {
function moveTop() {
...
}
}
class C extends B {
function moveBottom() {
...
}
}
但是C类只能像我一样得到B类的方法。
我怎么能用谷歌关闭呢?
谢谢。
若昂
编辑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”。我们希望在OpenLayers 3(ol3)之上构建我们的API。我们希望自己的方法使用ol3方法。我们需要有自己的记录方法。
例如,我想要自己的方法来检查图层的可见性。但是这种方法必须使用ol3“与我同名”的方法:
// My method
xgis.layer.prototype.getVisible = function() {
// Used the method of the parent class from ol3
return this.superClass_.getVisible();
};
我尝试使用关键字“superClass_”来获取父类的方法,但它不起作用。
还有其他办法吗?
答案 0 :(得分:0)
你能把你的例子写成有效的JavaScript吗?据我所知,这不是“多重继承”,而是简单的多层继承。
我认为你的意思是:
function A() {}
A.prototype.moveLeft = function() {};
function B() {}
goog.inherits(B, A);
A.prototype.moveTop = function() {};
function C() {}
goog.inherits(C, B);
A.prototype.moveBottom = function() {};