无法在我的自定义类(Javascript)中继承google.maps.Map V3

时间:2012-03-21 21:00:27

标签: javascript google-maps-api-3 prototypal-inheritance

我正在尝试创建一个继承自 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构造函数执行相同操作时)。

...谢谢

1 个答案:

答案 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);