Это проще всего сделать, передав объект в качестве аргумента:
myFunct({prm1: 'value', prm2: 'value', prm3: 'value'});
Однако, если вы хотите, чтобы любой пропущенный ключ имел значение по умолчанию, наиболее распространенная методология для этого - использовать $.extend
(при условии, что вы используете jQuery). Пример:
function myFunct(obj) {
var defaults = {
prm1: 'value',
prm2: 'value',
prm3: 'value'
};
// Set any defaults
obj = $.extend(defaults, obj);
// Output the results to the console
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
console.log("obj[" + i + "] =", obj[i]);
}
}
}
Тогда вы можете вызвать пример кода:
myFunct(); // will output all three params as being "value"
myFunct({prm3: 'test'}); // will output first two as being "value", third as being "test"
Если вы не используете jQuery, вы можете использовать метод, описанный lwburk выше . Тем не менее, метод lwburk становится довольно длинным, если у вас есть lot возможных вариантов.
Причина, по которой работает метод расширения, заключается в том, что он берет первый объект (в данном случае default
) и перезаписывает все значения в первом объекте (default
) значениями, указанными во втором объекте (obj
в этот случай). Так $.extend({a: 1, b: 2}, {a: 2})
возвращает {a: 2, b: 2}
; обратите внимание, что значение a
было взято из второго объекта, но значение b
из первого не было затронуто, поскольку оно не было указано во втором.
В других библиотеках есть похожие extend
методы (не обширный список):
Или вы можете написать свой собственный или использовать код из любого из вышеперечисленных.