// set Process
i18n.setProcess(function() {diFunctions.getI18n('http://localhost/service/i18n/page?lang=eng&group=staff') });
// Setter and getter
this.setProcess = function( opProcess ) { //here param opProcess is function with parameters see i18n.setProcess() line of code
if( opProcess == undefined)
throw "Process is undefined";
if( $.isFunction(opProcess) == false )
throw "Process is not a function"
process = opProcess;
};
this.getProcess = function() {
return process;
};
了解i18n.setProcess如何将带有param的函数作为setProcess的参数传递。
现在我在SetProcess中想要的是function() {diFunctions.getI18n('http://localhost/service/i18n/page?lang=eng&group=staff',**id**)
// id被动态添加到函数本身,该函数作为参数传递给setProcess
问题 - 除了函数参数(Url等等,id)之外,我想在set进程中动态添加id(在我的类变量中定义,总是可以通过id访问)。函数参数可以增长,但id最后应作为参数添加?
尝试了不少解决方案,但没有成功?查看here
答案 0 :(得分:2)
这是arguments
对象的用途..
function foo() {
var lastArg = arguments.length ? arguments[arguments.length - 1] : 'default';
return lastArg;
}
foo(); // "default"
foo(1); // 1
foo(1, 2); // 2
如果你想编写一个类似于bind
的函数,它只会在最后添加参数,那么你可以做
function appendArguments(fn) {
var slice = Array.prototype.slice.call.bind(Array.prototype.slice),
args = slice(arguments, 1);
return function () {
return fn.apply(this, slice(arguments).concat(args));
};
}
现在
var bar = appendArguments(foo, 3);
bar(); // 3
bar(4, 5); // 3 (because it's calling `foo(4, 5, 3)`