核心提示:浅层和深层的属性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;
};
}());


