var toString = [].toString,
hasOwn = Object.prototype.hasOwnProperty;var types = {
'[object Boolean]':'bool',
'[object Number]' : 'number',
'[object String]' : 'string',
'[object Object]':'object',
'[object Array]':'array',
'[object Function]':'function',
'[object Date]' : 'date',
'[object RegExp]' : 'regExp',
};var type = function(obj){
return obj === null ? String(obj) : types[toString.call(obj)] || 'object';
};var isWindow = function(obj){
return obj && typeof obj === 'object' && 'setInterval' in obj;
};var isArray = Array.isArray || function(obj){
return type(obj) === 'array';
};var isPlainObject = function(obj){
if(!obj || type(obj) !== 'object' || isWindow(obj) || obj.nodeType){
return false;
}
try{
if(obj.constructor && !hasOwn.call(obj, 'constructor')
&& !hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')){
return false;
}
}catch(e){
return false
}
var key; for(key in obj){} return key === undefined || hasOwn.call(obj, key)
}function extend(deep, target, ref){
var name, value, src, copy, clone, copyIsArray; for(name in ref){
src = target[name];
copy = ref[name];
if(target === copy){
continue;
}
if(deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))){
if(copyIsArray){
clone = src && isArray(src) ? src : [];
}else{
clone = src && isPlainObject(src) ? src : {};
}
target[name] = extend(deep,clone,copy);
}else{
target[name] = copy;
}
} return target;
}function extend2(target, ref){
var name, value;
for(name in ref){
value = ref[name];
if(value !== undefined){
target[name] = value;
}
} return target;
}以上就是在jquery中实现深拷贝与浅拷贝的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号