Skip to content

Instantly share code, notes, and snippets.

@cferdinandi
Last active August 17, 2024 07:57
Show Gist options
  • Select an option

  • Save cferdinandi/4f8a0e17921c5b46e6c4 to your computer and use it in GitHub Desktop.

Select an option

Save cferdinandi/4f8a0e17921c5b46e6c4 to your computer and use it in GitHub Desktop.

Revisions

  1. Chris Ferdinandi revised this gist Jun 27, 2014. 1 changed file with 24 additions and 0 deletions.
    24 changes: 24 additions & 0 deletions readme.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    ## Example

    ```js
    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}
    ```
  2. Chris Ferdinandi created this gist Jun 27, 2014.
    22 changes: 22 additions & 0 deletions extend.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    /**
    * 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;
    };