将逗号分隔的参数传递给js函数

时间:2010-12-09 16:06:03

标签: javascript

我有以下功能:

function calculateAspect(options){
    def = {
        orgw: 0,
        orgh: 0,
        tarw: 0,
        tarh: 0
    };
    o = $.extend(def,options);
    console.log(o);


};    
calculateAspect({orgw:640});

我希望能够传递如下值:

calculatedAspect(640,480,320)

calculateAspect(200)

考虑到这个功能,这似乎不合逻辑。但我只是好奇如何把它拉下来。

2 个答案:

答案 0 :(得分:2)

您可以使用包含所有传递参数的arguments

function calculateAspect(options){
    var argNames = ["orgw","orgh","tarw","tarh"];
    def = {
        orgw: 0,
        orgh: 0,
        tarw: 0,
        tarh: 0
    };
    for (var i=0, n=Math.min(arguments.length, 4); i<n; i++) {
        def[argNames[i]] = arguments[i];
    }
    console.log(o);
}

答案 1 :(得分:1)

你必须为参数的含义制定自己的约定,但你可以这样做:

function calculateAspect(orgw, orgh, tarw, tarh) {
  var def = { /* ... */ };
  if (arguments.length === 1 && (typeof orgw) === "object") {
    var o = $.extend(def, orgw);
    // ... normal code ...
  }
  else {
    calculateAspect({orgw: orgw, orgh: orgh, tarw: tarw, tarh: tarh});
  }
}

也许