2015-03-19 52 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

相關問題