2013-08-07 5 views
0

Я работаю над абстрактной функцией отслеживания mixpanel. Функция разработка, как это:Как абстрагироваться функция JavaScript (mixpanel)

mixpanel.track("Hello World"); 
mixpanel.track("Hello World", { "ab_version": 2}); 
mixpanel.track("Hello World", { "ab_version": 2, "color" : "red"}); 

Я пытаюсь абстрагироваться это так отслеживание событий не привязанные к Mixpanel в моем приложении. Я пробовал:

MyApp.eventTrack("Hello World", { "ab_version": 2}); 

(function() { 
    MyApp.eventTrack = function(data) { 
     mixpanel.track(data); 
    } 
}()); 

Однако это не работает должным образом. Любые предложения, как я могу заставить MyApp.eventTrack правильно передать параметры для работы с mixpanel.track?

Благодаря

+0

Вам не хватает второго аргумента в определении функции? –

ответ

1

Ваш код отсутствует второй аргумент:

(function() { 
    MyApp.eventTrack = function(firstArg, secondArg) { 
     mixpanel.track(firstArg, secondArg); 
    } 
}()); 

В качестве альтернативы, вы можете обрабатывать неограниченное число аргументов, используя apply и arguments вместе:

MyApp.eventTrack = function() { 
    mixpanel.track.apply(mixpanel, arguments); 
} 

Это требует mixpanel.track со всеми аргументами, переданными в MyApp.eventTrack.

Смежные вопросы