作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个自定义 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/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!