UNPKG

shuyar-util

Version:

Some useful function or tools in development.

130 lines (107 loc) 3.77 kB
;(function () { /** * Created by Galen Sheen * @Desc object常用工具 */ // Reference to the global object var root = this; var object = {}; object.equals = function (obj1, obj2) { if (!obj1 || !obj2) { return false; } var p; // Check is obj1[p] equals to obj2[p] for (p in obj1) { if (obj1.hasOwnProperty(p)) { if (obj1[p]) { if (!obj2[p]) { return false; } switch (typeof obj1[p]) { case 'object': if (!this.equals(obj1[p], obj2[p])) { return false; } break; case 'function': if (obj1[p].toString() !== obj2[p].toString()) { return false; } break; default: if (obj1[p] !== obj2[p]) { return false; } } } else { if (obj2[p]) { return false; } } } } // Check is obj2[p] equals to obj1[p] for (p in obj2) { if (obj2.hasOwnProperty(p)) { if (obj2[p]) { if (!obj1[p]) { return false; } switch (typeof obj2[p]) { case 'object': if (!this.equals(obj2[p], obj1[p])) { return false; } break; case 'function': if (obj2[p].toString() !== obj1[p].toString()) { return false; } break; default: if (obj2[p] !== obj1[p]) { return false; } } } else { if (obj1[p]) { return false; } } } } // Else obj1 equals to obj2 return true; }; object.merge = function (obj1, obj2) { if (obj2) { var key, value; for (key in obj2) { if (obj2.hasOwnProperty(key)) { value = obj2[key]; try { if (value.constructor === Object) { obj1[key] = this.merge(obj1[key], value); } else { obj1[key] = value; } } catch (e) { obj1[key] = value; } } } } return obj1; }; // Check the env is node or browser if (typeof module !== 'undefined' && module.exports) { // Node env module.exports = object; } else if (typeof window !== 'undefined') { // Browser env root.object = object; } else { return object; } }).call(this);