| 'use strict'; |
| |
| var isObject = require('is-extendable'); |
| |
| module.exports = function extend(o/*, objects*/) { |
| if (!isObject(o)) { o = {}; } |
| |
| var len = arguments.length; |
| for (var i = 1; i < len; i++) { |
| var obj = arguments[i]; |
| |
| if (isObject(obj)) { |
| assign(o, obj); |
| } |
| } |
| return o; |
| }; |
| |
| function assign(a, b) { |
| for (var key in b) { |
| if (hasOwn(b, key)) { |
| a[key] = b[key]; |
| } |
| } |
| } |
| |
| /** |
| * Returns true if the given `key` is an own property of `obj`. |
| */ |
| |
| function hasOwn(obj, key) { |
| return Object.prototype.hasOwnProperty.call(obj, key); |
| } |