Mais uso de $ .extend, uma maneira mais limpa

Na maioria das vezes, você usaria $.extendpara substituir algumas opções padrão em um plug-in para criar configurações, por exemplo

var defaults = { a: 3, b: 6}
var settings = $.extend({}, defaults, {a: 4});

Para ter certeza de ter ae bem seu objeto de configurações o tempo todo. No entanto, não impede que também c, por exemplo,

var settings = $.extend({}, defaults, {a: 4, c: 8});

Às vezes, você precisa exatamente ae b. Aqui está um snippet para copiar valores de um objeto javascript
para propriedades que existem no objeto de origem, sem adicionar outras propriedades:

var assign = function(destination){
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for(var prop in destination){
if(typeof(destination[prop]) === "object" && source[prop]){
assign
(destination[prop], source[prop]);
}else{
if(source[prop]){
destination
[prop] = source[prop];
}
}
}
}
return destination;
}

Agora, settingstem apenas ae b:

var settings = assign(defaults, {a: 4, c: 8}, {d: 3});

<br/>

Nota: útil ao armazenar ou enviar os dados e mantê-los ao mínimo

Nota: aqui estou modificando diretamente defaults. Considere copiá-lo antes