我正在尝试创建一个继承自 google.maps.Map (V3 API)的自定义javascript类。 这是代码:
function MyClass(domElem, options){
google.maps.Map.call(this, domElem, options);
var custom_var = new google.maps.MVCArray();
this.getCustomVar = function(){ return custom_var };
}
MyClass.prototype = new google.maps.Map;
MyClass.prototype.constructor = MyClass;
此代码抛出控制台错误,如:
Uncaught TypeError: Cannot read property 'offsetWidth' of undefined
我已经尝试将它放在setTimeout中,延迟时间为5秒,但我认为DOM元素不是问题(因为当我使用纯google.maps.Map构造函数执行相同操作时)。
...谢谢
答案 0 :(得分:2)
Here是在javascript中继承“类”的正确方法:
goog.inherits = function(childCtor, parentCtor) {
/** @constructor */
function tempCtor() {};
tempCtor.prototype = parentCtor.prototype;
childCtor.superClass_ = parentCtor.prototype;
childCtor.prototype = new tempCtor();
childCtor.prototype.constructor = childCtor;
};
所以你可以尝试类似的东西:
function MyClass(domElem, options){
google.maps.Map.call(this, domElem, options);
var custom_var = new google.maps.MVCArray();
this.getCustomVar = function(){ return custom_var };
}
goog.inherits(MyClass, google.maps.Map);