我有以下功能:
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)
考虑到这个功能,这似乎不合逻辑。但我只是好奇如何把它拉下来。
答案 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});
}
}
也许