我想传递可变数量的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});
但这是错误的语法。是否有正确的语法可以处理?
答案 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 );
(修正问题中的不平衡引号。)