You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
925 B
39 lines
925 B
var extend = function () {
|
|
|
|
// Variables
|
|
var extended = {};
|
|
var deep = false;
|
|
var i = 0;
|
|
var length = arguments.length;
|
|
|
|
// Check if a deep merge
|
|
if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {
|
|
deep = arguments[0];
|
|
i++;
|
|
}
|
|
|
|
// Merge the object into the extended object
|
|
var merge = function (obj) {
|
|
for (var prop in obj) {
|
|
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
|
|
// If deep merge and property is an object, merge properties
|
|
if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {
|
|
extended[prop] = extend(true, extended[prop], obj[prop]);
|
|
} else {
|
|
extended[prop] = obj[prop];
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
// Loop through each object and conduct a merge
|
|
for (; i < length; i++) {
|
|
var obj = arguments[i];
|
|
merge(obj);
|
|
}
|
|
|
|
return extended;
|
|
|
|
};
|
|
|
|
module.exports = extend; |