切片JS函数的参数

时间:2013-06-12 03:02:10

标签: javascript

我想写一个像

这样的常用确认方法
var confirmDelete = function (fun) {
    if (confirm("Do you want to delete " + arguments[1])) {
        $(arguments[2]).remove();
        fun(arguments[3]);
    }
    return false;
}

fun使用一个参数可以正常工作,但我想适合两个或更多参数,我该怎么做?

3 个答案:

答案 0 :(得分:0)

每个javascript函数对象都有一个名为apply的方法。 apply将使用给定的上下文和给定的参数调用您的函数。

var confirmDelete=function(fun) {
    if(confirm("Do you want to delete "+ arguments[1])) {
        // remove the first two elements in arguments, and use the resulting array as a new set of
        // arguments to fun
        fun.apply(this, Array.slice(arguments, 2));
    }
}

答案 1 :(得分:0)

在JavaScript中,您可以根据需要传递任意数量的参数。

如果你没有通过它们,它们将是未定义的。

所以......你可以这样做:

var confirmDelete = function(arg1, arg2, arg3) {
    if (typeof arg2 === 'undefined') {
        arg2 = "default value for arg2";
    }
    if (typeof arg3 === 'undefined') {
        arg3 = "default value for arg3";
    }
    // do more stuff...
}

您还可以阅读有关神奇的arguments变量here

的信息

答案 2 :(得分:0)

您可以重写您的功能

var confirmDelete = function fun(arg1, arg2) {
  // number of parameter as your need
  // TODO some stuff
  fun(arg1 -1, arg2 +3); // call it recursively 
  return false; 
}