Na maioria das vezes, você usaria $.extend
para 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 a
e b
em 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 a
e 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, settings
tem apenas a
e 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