2013-04-16 4 views
-1

Я творю функцию расширения:Как передать функции с именованными аргументами

jQuery.fn.openCreatePersonModal = function (arg1, personHandler) { 
     var person = { "displayName": "john" }; 
     personHandler(person); 
     return this; 
    } 

Но не может использовать его, ни так:

$("<div></div>").openCreatePersonModal({ 
    arg1: "bla", 
    personHandler: somePreviouslyCreatedFunction 
}); 

Nor так:

$("<div></div>").openCreatePersonModal({ 
    arg1: "bla", 
    personHandler: function(person) { ... } 
}); 

Я получаю: undefined не является функцией

Так что это не признает somePreviouslyCreatedFunction как функцию.

+1

простую ошибку синтаксиса, вы ожидаете функции и передачи объекта. Передайте 'somePreviouslyCreatedFunction' или' new function (person) {...} 'непосредственно, без окружающего объекта (' {personHandler: ...} '), и он будет работать. – Yoshi

+0

Затем примите ('function (personHandler, foo, bar) {') и передайте больше параметров. Если вам нужен именованный подход, то принимайте только один параметр и работайте с ним, например: 'function (args) {args.personHandler ...'. – Yoshi

+0

Ahhh! БЛАГОДАРЮ. Отправьте его как ответ – sports

ответ

-1

Если кто-то хочет использовать именованные аргументы, следует использовать 1 аргумент и интерпретировать его как объект

jQuery.fn.openCreatePersonModal = function (args) { 
     var person = { "displayName": "john" }; 
     args.personHandler(person);     // <-- notice "args." 
     return this; 
} 
Смежные вопросы