index.js (576B)
1 'use strict'; 2 3 var isObject = require('is-extendable'); 4 5 module.exports = function extend(o/*, objects*/) { 6 if (!isObject(o)) { o = {}; } 7 8 var len = arguments.length; 9 for (var i = 1; i < len; i++) { 10 var obj = arguments[i]; 11 12 if (isObject(obj)) { 13 assign(o, obj); 14 } 15 } 16 return o; 17 }; 18 19 function assign(a, b) { 20 for (var key in b) { 21 if (hasOwn(b, key)) { 22 a[key] = b[key]; 23 } 24 } 25 } 26 27 /** 28 * Returns true if the given `key` is an own property of `obj`. 29 */ 30 31 function hasOwn(obj, key) { 32 return Object.prototype.hasOwnProperty.call(obj, key); 33 }