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…
。啊哈!谢谢。将其作为答案发布可能的副本