2015-03-19 22 views
1

首先,这可能不是一个LeafletJS问题,而是一个单纯的JS问题,但直到Leaflet才发现它。在LeafletJS中如何扩展工作?为什么需要中介属性才能正常工作?

最近我一直在试验Leaflet,并且在某些时候想传递一个控制对象的扩展版本的函数(对于那些也使用Java或类似语言的人,我试图做类似的实例化一个匿名类)。

所以:

鉴于类L.Control(我想和方法X延伸),我尝试:

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

从而未能惨,因为该函数的参数是func未定义。

但是:

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

作品完美,为new v()回报,符合市场预期,一个L.Control对象有一个额外的X功能。底线:两段代码之间的区别是什么,以及如何使它与单行(如果可能)一起工作?

谢谢!

回答

1

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

的问题是由于操作的顺序和解决方案是增加一套支架,一衬垫成为:

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

如果你不打算改变类的方法之一,只有将函数添加到应该使用'include'方法的类中:'L.Control.include({'x':function(){}});' – iH8 2015-03-19 11:13:49

相关问题