Я нашел метод extend библиотеки Underscore.js очень полезен, когда я хочу передать объект в качестве параметра, который может быть либо изменен, либо полностью заменен .
function replaceOrModify(aObj) {
if (modify) {
aObj.setNewValue('foo');
} else {
var newObj = new MyObject();
// _.extend(destination, *sources)
_.extend(newObj, aObj);
}
}