核心提示:浅层和深层的属性copy代码实例讲解var App = App || {};(function(){/** * 判断是否是数组 * @param val * @returns {boolean} */...
浅层和深层的属性copy代码实例讲解
var App = App || {}; (function(){ /** * 判断是否是数组 * @param val * @returns {boolean} */ var toString = Object.prototype.toString; App.isArray = function(val){ return ('isArray' in Array) ? Array.isArray(val) : toString.call(val) === '[object Array]'; }; /** * 判断是否是对象 * IE6 使用toString判断是Object * @param val * @returns {boolean} */ App.isObject = function(val){ return toString.call(null) === '[object Object]' ? val !== null && val !== undefined && toString.call(val) === '[object Object]' && val.ownerDocument === undefined//排除dom : toString.call(val) === '[object Object]'; }; /** * 深层属性拷贝 * @param object * @param config * @param defaults */ App.apply = function(object, config, defaults){ if(defaults){ app.apply(object,defaults); } if(object && config && App.isObject(config)){ var i, j,k; for(i in config){ object[i] = config[i]; } /** * 处理可枚举属性的copy */ if (enumerables) { for (j = enumerables.length; j--; ) { k = enumerables[j]; if (config.hasOwnProperty(k)) { object[k] = config[k]; } } } } }; /** * 浅层属性拷贝 * @param object * @param config * @returns {*} */ App.applyIf = function(object, config){ var property; if (object) { for (property in config) { if (object[property] === undefined) { object[property] = config[property]; } } } return object; }; }());