扩展在LeafletJS中是如何工作的,为什么我需要一个中介归因才能使其正确工作

How does extending work in LeafletJS and why do I need an intermediary attribution for it to work correctly?

本文关键字:工作 一个 何工作 LeafletJS 扩展 为什么      更新时间:2023-09-26

首先,这可能不是一个LeafletJS问题,只是一个JS问题,但我直到Leaflet才遇到它。

我最近一直在试验Leaflet,在某个时候我想把Control对象的扩展版本传递给一个函数(对于那些也使用Java或类似语言的人来说,我试图通过实例化匿名类来做一些类似的事情)。

因此:

给定类L.Control(我想用方法x扩展它),我尝试了:

func(new L.Control.extend({x: function() {}})());

由于函数func的参数未定义。

但是:

var v = L.Control.extend({x: function() { }}); 
func(new v());

正如预期的那样,new v()会返回一个带有额外x函数的L.Control对象,因此效果非常好。

一句话:这两段代码之间有什么区别?如果可能的话,我如何使用一行代码?

谢谢!

经过一些实验,我自己想出来了。

问题是由于操作顺序造成的,解决方案是添加一组括号,一行变成:

func(new (L.Control.extend({x: function() {}}))());
相关文章: