2015-03-19 1 views
1

Прежде всего, это может быть не вопрос LeafletJS, а простой JS, но я не встречал его до Листовки.Как продлить работу в LeafletJS и зачем мне нужна промежуточная атрибуция для правильной работы?

Я в последнее время экспериментировал с Leaflet и в какой-то момент хотел передать функции расширенную версию объекта Control (для тех, кто также работает с Java или подобным языком, я пытался сделать что-то подобное с созданием экземпляра анонимный класс).

Итак:

Учитывая класс L.Control (который я хотел расширить с помощью метода х), я попробовал:

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

, который с треском проваливается, так как параметр функции func является не определено.

Однако:

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

работает отлично, так как new v() возвращается, как и ожидалось, в L.Control объекта с дополнительной функцией х.

Нижняя строка: в чем разница между двумя фрагментами кода и как я могу заставить его работать с одним слоем (если возможно)?

Спасибо!

ответ

1

После некоторых экспериментов я понял это сам.

проблемы связано с порядком операций и решение было добавить набор скобок, то один лайнер становится:

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

Если вы не собираетесь изменить один из методов классов-х и только добавляя функции к классу, вы должны использовать метод 'include':' L.Control.include ({'x': function() {}}); ' – iH8