initial commit
This commit is contained in:
commit
4b60ece582
327 changed files with 28286 additions and 0 deletions
69
libjs/utils/globalMethods.js
Normal file
69
libjs/utils/globalMethods.js
Normal file
|
@ -0,0 +1,69 @@
|
|||
"use strict";
|
||||
|
||||
global.W = {
|
||||
extend: function () {
|
||||
var lTarget = arguments[0] || {};
|
||||
var lIndex = 1;
|
||||
var lLength = arguments.length;
|
||||
var lDeep = false;
|
||||
var lOptions, lName, lSrc, lCopy, lCopyIsArray, lClone;
|
||||
|
||||
// Handle a deep copy situation
|
||||
if (typeof lTarget === "boolean") {
|
||||
lDeep = lTarget;
|
||||
lTarget = arguments[1] || {};
|
||||
// skip the boolean and the target
|
||||
lIndex = 2;
|
||||
}
|
||||
|
||||
// Handle case when target is a string or something (possible in deep
|
||||
// copy)
|
||||
if (typeof lTarget !== "object" && typeof lTarget != "function") {
|
||||
lTarget = {};
|
||||
}
|
||||
|
||||
if (lLength === lIndex) {
|
||||
lTarget = this;
|
||||
--lIndex;
|
||||
}
|
||||
|
||||
for (; lIndex < lLength; lIndex++) {
|
||||
// Only deal with non-null/undefined values
|
||||
if ((lOptions = arguments[lIndex]) != undefined) {
|
||||
// Extend the base object
|
||||
for (lName in lOptions) {
|
||||
lSrc = lTarget[lName];
|
||||
lCopy = lOptions[lName];
|
||||
|
||||
// Prevent never-ending loop
|
||||
if (lTarget === lCopy) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Recurse if we're merging plain objects or arrays
|
||||
if (lDeep && lCopy && (Object.isObject(lCopy) || (lCopyIsArray = Array.isArray(lCopy)))) {
|
||||
if (lCopyIsArray) {
|
||||
lCopyIsArray = false;
|
||||
lClone = lSrc && Array.isArray(lSrc) ? lSrc : [];
|
||||
|
||||
} else {
|
||||
lClone = lSrc && Object.isObject(lSrc) ? lSrc : {};
|
||||
}
|
||||
|
||||
// Never move original objects, clone them
|
||||
lTarget[lName] = Object.extend(lDeep, lClone, lCopy);
|
||||
|
||||
// Don't bring in undefined values
|
||||
} else {
|
||||
if (lCopy !== undefined) {
|
||||
lTarget[lName] = lCopy;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return the modified object
|
||||
return lTarget;
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue