2010-12-09 3 views
0

У меня есть следующие функции:Pass разделенные запятыми аргументы Js функции

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

Я могу ошибаться, но я думаю, что вы должны передать ему массив, или вы должны объявить аргументы непосредственно. – 2010-12-09 16:10:08

+0

Что вы хотите совершить с теми числами, которые вы передаете с аргументами? – RoToRa 2010-12-09 16:15:28

ответ

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

Вы должны были бы составить свое собственное соглашение для того, что параметры должны означать, но вы могли бы сделать что-то вроде этого:

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}); 
    } 
} 

возможно.

Смежные вопросы