gpt4 book ai didi

javascript - 如何扩展谷歌地图类?

转载 作者:行者123 更新时间:2023-11-30 20:48:16 25 4
gpt4 key购买 nike

我正在尝试创建一个自定义 Google map 对象,该对象使用原型(prototype)继承来代理它没有通过 Google map 对象的任何功能。

到目前为止,这是我正在努力实现的一个极其简单的示例:

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 的原型(prototype),因此我必须在我的构造函数中将我的函数定义为 this.myFunction。现在每个谷歌地图实例都创建了自己的自定义函数,而不是作为引用。

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

最佳答案

呃,既然你一直在使用 ES6 class 语法,为什么不把它也用于继承呢?

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;
}
}

关于javascript - 如何扩展谷歌地图类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48461656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com