将未知的参数计数传递给js构造函数

时间:2011-12-05 09:37:40

标签: javascript parameters

我使用一些javascript库来绘制图表。 它需要将带坐标的数组传递给图表初始值设定项。 但是图表初始化函数的签名看起来像新函数([arr1],[arr2],[arr3]),但我不知道我将传入多少数组,但这是不可能的以另一种方式初始化它。怎么可能解决这个问题? 感谢。

UPD:调用的函数是构造函数,因此 apply 无法正常工作。 问题是如何传递数据,而不是如何获取传递数据的计数

4 个答案:

答案 0 :(得分:5)

解决方案:可以在构造函数中使用apply,但它需要以下解决方法:

function construct(constructor, args) {
    function F() {
        return constructor.apply(this, args);
    }
    F.prototype = constructor.prototype;
    return new F();
}

答案 1 :(得分:3)

您可以使用名为arguments的内置变量,它是传递给函数和arguments.length的参数的类数组对象,以确定传递了多少个参数。有关详细信息,请参阅此MDN reference

function myFunc() {
    for (var i = 0; i < arguments.length; i++) {
        // you can process arguments[i] here
    }
}

如果您尝试传递可变数量的参数,则可以使用.apply()。构造一个参数数组并将其作为第二个参数传递给apply。第一个参数是您希望将this指针设置为的内容。这是.apply()的{​​{3}}。

var myArgs = [arr1, arr2, arr3];
myFunc.apply(window, myArgs);

答案 2 :(得分:0)

您想使用arguments对象。它基本上是一个类似于数组的对象,其中包含所有参数。您可以像这样使用它:

function yourFunction() {
    for (var i = 0, len = arguments.length; i < len; i++) {
        console.log(arguments[i]); //That's the argument you passed in.
    }
}

Demo

答案 3 :(得分:0)

接受可变数量参数的函数称为可变参数函数。 在JavaScript中,您可以使用arguments对象来访问参数。要调用此功能,您还可以使用.call.apply