Skip to content

Instantly share code, notes, and snippets.

@pbojinov
Created January 6, 2015 06:57
Show Gist options
  • Save pbojinov/8f3765b672efec122f66 to your computer and use it in GitHub Desktop.
Save pbojinov/8f3765b672efec122f66 to your computer and use it in GitHub Desktop.
var defaults = {
number: 1,
bool: true,
magic: 'real',
animal: 'whale',
croutons: 'delicious'
};
var options = {
number: 2,
magic: 'real',
animal: 'porpoise',
bool: false,
random: 42
};
var settings = extend(defaults, options);
console.log(settings);
// Returns: Object{animal: "porpoise", bool: false, croutons: "delicious", magic: "real", number: 2, random: 42}
/**
* Merge defaults with user options
* @private
* @param {Object} defaults Default settings
* @param {Object} options User options
* @returns {Object} Merged values of defaults and options
*/
var extend = function ( defaults, options ) {
var extended = {};
var prop;
for (prop in defaults) {
if (Object.prototype.hasOwnProperty.call(defaults, prop)) {
extended[prop] = defaults[prop];
}
}
for (prop in options) {
if (Object.prototype.hasOwnProperty.call(options, prop)) {
extended[prop] = options[prop];
}
}
return extended;
};
@JuhQ
Copy link

JuhQ commented Jul 16, 2015

Updated version:


var extend = function() {
  var extended = {};

  for(key in arguments) {
    var argument = arguments[key];
    for (prop in argument) {
      if (Object.prototype.hasOwnProperty.call(argument, prop)) {
        extended[prop] = argument[prop];
      }
    }
  }

  return extended;
};

Takes in what ever amount of arguments

@bhavyaw
Copy link

bhavyaw commented Mar 23, 2016

@sp00m
Copy link

sp00m commented Apr 21, 2017

@danielchikaka
Copy link

How about this little code down here:

  function extendDefaults(source, properties) {
         var property;
         for(property in properties) {
             if(properties.hasOwnProperty(property)) {
                 source[property] = properties[property];
             }
         }
         return source;
     }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment