Если вам нужно сделать это во многих последовательных функциях, способ стандартизировать процесс и ускорить его:
function setOpts (standard, user) {
if (typeof user === 'object' {
for (var key in user) {
standard[key] = user[key];
}
}
}
Тогда вы можете просто определить свои функции просто так:
var example = function (options) {
var opts = {
a: 1,
b: 2,
c:3
};
setOpts(opts, options);
}
Таким образом вы определяете только один объект параметров внутри функции, который содержит значения по умолчанию.
Если вы хотите поставить дополнительную проверку на избегать наследования прототипа , первыйфункция может быть:
function setOpts (standard, user) {
if (typeof user === 'object') {
Object.keys(user).forEach(function (key) {
standard[key] = user[key];
});
}
}
Последний случай не поддерживается для: IE <9, Chrome <5, Firefox <4, Safari <5 </p>
(вы можете проверить таблицу совместимости здесь )
Наконец ECMAScript 6 предоставит нам лучший способ сделать это: параметры по умолчанию .
Пройдет несколько месяцев, прежде чем это станет широко распространенным в браузерах.