Javascript 如何传递带有命名参数的函数

Javascript 如何传递带有命名参数的函数,javascript,jquery,argument-passing,Javascript,Jquery,Argument Passing,我正在创建一个扩展函数: jQuery.fn.openCreatePersonModal = function (arg1, personHandler) { var person = { "displayName": "john" }; personHandler(person); return this; } 但不能用它,也不能用这种方式: $("<div></div>").openCreatePersonMod

我正在创建一个扩展函数:

 jQuery.fn.openCreatePersonModal = function (arg1, personHandler) {
        var person = { "displayName": "john" };
        personHandler(person);
        return this;
  }
但不能用它,也不能用这种方式:

$("<div></div>").openCreatePersonModal({
    arg1: "bla",
    personHandler: somePreviouslyCreatedFunction
});
$("<div></div>").openCreatePersonModal({
    arg1: "bla",
    personHandler: function(person) { ... }
});
$(“”)。OpenCreatePersonModel({
arg1:“bla”,
personHandler:somePreviouslyCreatedFunction
});
也不是这样:

$("<div></div>").openCreatePersonModal({
    arg1: "bla",
    personHandler: somePreviouslyCreatedFunction
});
$("<div></div>").openCreatePersonModal({
    arg1: "bla",
    personHandler: function(person) { ... }
});
$(“”)。OpenCreatePersonModel({
arg1:“bla”,
personHandler:函数(person){…}
});
我得到: 未定义不是一个函数


因此,它没有将以前创建的某个函数识别为函数。

如果要使用命名参数,应使用1个参数并将其解释为对象

jQuery.fn.openCreatePersonModal = function (args) {
       var person = { "displayName": "john" };
       args.personHandler(person);                   // <-- notice "args."
       return this;
}
jQuery.fn.openCreatePersonModel=函数(args){
var person={“displayName”:“john”};

args.personHandler(person);//简单的语法错误,您需要一个函数并传递一个对象。直接传递
somePreviouslyCreatedFunction
new function(person){…}
,而不使用周围的对象(
{personHandler:…}
),它将工作。然后接受(
函数(personHandler,foo,bar){
)并传递更多参数。如果您想要命名的方法,则只接受一个参数并使用它,例如:
函数(args){args.personHandler…
。啊哈!谢谢。将其作为答案发布可能的副本