Javascript 如何扩展GoogleMaps类?

Javascript 如何扩展GoogleMaps类?,javascript,inheritance,ecmascript-6,prototype,proto,Javascript,Inheritance,Ecmascript 6,Prototype,Proto,我正在尝试创建一个自定义的GoogleMaps对象,它使用prototype继承将它没有的任何函数代理给GoogleMaps对象 到目前为止,这是一个非常简单的例子,说明了我正在努力实现的目标: export default class MapProxy { constructor(element, options) { this.markers = {}; google.maps.Map.apply(this, arguments)] }

我正在尝试创建一个自定义的GoogleMaps对象,它使用prototype继承将它没有的任何函数代理给GoogleMaps对象

到目前为止,这是一个非常简单的例子,说明了我正在努力实现的目标:

export default class MapProxy {
    constructor(element, options) {
        this.markers = {};
        google.maps.Map.apply(this, arguments)]
    }

    this.hasMarkers = () => {
        return (Object.keys(this.markers).length > 0);
    };
}

MapProxy.prototype = Object.create(google.maps.Map.prototype);
这很好,但我正在重写
MapProxy
的原型,因此我必须在构造函数中将我的函数定义为
This.myFunction
。现在,每个谷歌地图实例都创建了自己的自定义函数,而不是作为参考


现在我可能不会得到15个Google Map实例,但是有没有更好的策略来继承Google Maps对象的原型函数而不重写我的
ProxyMap
原型函数?

呃,既然您使用的是ES6
语法,为什么不将其用于继承呢

export default class MapProxy extends google.maps.Map {
//                            ^^^^^^^^^^^^^^^^^^^^^^^
    constructor(element, options) {
        super(...arguments);
        this.markers = {};
        // own method as an arrow function initialised in the constructor
        this.hasMarkers = () => Object.keys(this.markers).length > 0;
    }
    // prototype method
    hasMarkers() {
        return Object.keys(this.markers).length > 0;
    }
}

感谢这项工作,那么ES5在这方面的等价物是什么呢?“我很好奇,因为我的例子是一种混合体。”Stephan-v。如果您不确定,请通过transpiler传递ES6:-)