我使用一些javascript库来绘制图表。 它需要将带坐标的数组传递给图表初始值设定项。 但是图表初始化函数的签名看起来像新函数([arr1],[arr2],[arr3]),但我不知道我将传入多少数组,但这是不可能的以另一种方式初始化它。怎么可能解决这个问题? 感谢。
UPD:调用的函数是构造函数,因此 apply 无法正常工作。 问题是如何传递数据,而不是如何获取传递数据的计数
答案 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.
}
}
答案 3 :(得分:0)
接受可变数量参数的函数称为可变参数函数。
在JavaScript中,您可以使用arguments
对象来访问参数。要调用此功能,您还可以使用.call
或.apply