JavaScript函数的可变数量的对象参数

时间:2011-01-05 17:14:18

标签: javascript

我想传递可变数量的javascript函数。

这样做:

function() {
    var args = Array.prototype.slice.call(arguments);  
    for(var i = 0; i < args.length; i++){
        console.log(args[i]);
    }
}

但是,我想传递一个可变数量的数组或键值项,如:

dsmetrics.track({'object':'hi', 'type:1}, {'object':'hi', 'type:1}, {'object':'hi', 'type:1});

但这是错误的语法。是否有正确的语法可以处理?

3 个答案:

答案 0 :(得分:1)

var obj = {
  "param1" : "value1",
  "param2" : "value2",
  "param3" : {
    "param4" : "value4",
    "param5" : "value5"
  },
  "param6" : "value6"
};

function func(obj) {

}

答案 1 :(得分:1)

See live example。您可以完全按照它的方式执行此操作,它为每个对象创建一个参数。语法没有错。

function objArgs() {
    for(var i = 0; i < arguments.length; i++){
        console.log(arguments[i]);
    }
}

objArgs({one: 1}, {two: 2}, {three: 3});

这实际上取决于您的业务应用程序。如果分别传递这些参数或将它们组合成一个数组更有意义。

答案 2 :(得分:0)

我不明白为什么你认为这是错误的语法。

如果你希望它更具动态性,你在数组中有可变数量的参数,你想要作为单独的参数传递,你可以使用.apply()

var args = [{'object':'hi', 'type':1}, {'object':'hi', 'type':1}, {'object':'hi', 'type':1}];

dsmetrics.track.apply( dsmetrics, args );

(修正问题中的不平衡引号。)