Javascript对象深拷贝
来源:互联网 发布:百战天下强化数据 编辑:程序博客网 时间:2024/05/16 05:00
Object.prototype.clone = function()
{
if(typeof(this) != "object")
{
return this;
}
var cloneDepth = ((arguments.length >= 1)?((isNaN(parseInt(arguments[0])))?(null):parseInt(arguments[0])):null);
if (cloneDepth)
{
cloneDepth=((cloneDepth <= 0)?(null):(cloneDepth));
}
var cloneObject = null;
var thisConstructor = this.constructor;
var thisConstructorPrototype = thisConstructor.prototype;
if (thisConstructor == Array)
{
cloneObject = new Array();
}
else
if(thisConstructor == Object)
{
cloneObject = new Object();
}
else
{
try
{
cloneObject = new thisConstructor;
}
catch(exception)
{
cloneObject = new Object();
cloneObject.constructor = thisConstructor;
cloneObject.prototype = thisConstructorPrototype;
}
}
var propertyName = "";
var newObject=null;
for (propertyName in this)
{
newObject = this[propertyName];
if (!thisConstructorPrototype[propertyName])
{
if (typeof(newObject)=="object")
{
if (newObject === null)
{
cloneObject[propertyName] = null;
}
else
{
if(cloneDepth)
{
if(cloneDepth == 1)
{
cloneObject[propertyName] = null;
}
else
{
cloneObject[propertyName] = newObject.clone(--cloneDepth);
}
}
else
{
cloneObject[propertyName] = newObject.clone();
}
}
}
else
{
cloneObject[propertyName] = newObject;
}
}
}
return cloneObject;
};
{
if(typeof(this) != "object")
{
return this;
}
var cloneDepth = ((arguments.length >= 1)?((isNaN(parseInt(arguments[0])))?(null):parseInt(arguments[0])):null);
if (cloneDepth)
{
cloneDepth=((cloneDepth <= 0)?(null):(cloneDepth));
}
var cloneObject = null;
var thisConstructor = this.constructor;
var thisConstructorPrototype = thisConstructor.prototype;
if (thisConstructor == Array)
{
cloneObject = new Array();
}
else
if(thisConstructor == Object)
{
cloneObject = new Object();
}
else
{
try
{
cloneObject = new thisConstructor;
}
catch(exception)
{
cloneObject = new Object();
cloneObject.constructor = thisConstructor;
cloneObject.prototype = thisConstructorPrototype;
}
}
var propertyName = "";
var newObject=null;
for (propertyName in this)
{
newObject = this[propertyName];
if (!thisConstructorPrototype[propertyName])
{
if (typeof(newObject)=="object")
{
if (newObject === null)
{
cloneObject[propertyName] = null;
}
else
{
if(cloneDepth)
{
if(cloneDepth == 1)
{
cloneObject[propertyName] = null;
}
else
{
cloneObject[propertyName] = newObject.clone(--cloneDepth);
}
}
else
{
cloneObject[propertyName] = newObject.clone();
}
}
}
else
{
cloneObject[propertyName] = newObject;
}
}
}
return cloneObject;
};
- Javascript对象深拷贝
- Javascript深拷贝对象
- javascript对象深拷贝。
- javascript对象深拷贝
- JavaScript对象的浅拷贝和深拷贝简单实现
- 浅谈JavaScript对象的浅拷贝和深拷贝
- JavaScript 数组对象深拷贝与浅拷贝
- 【javascript】对象的深拷贝与浅拷贝
- JavaScript中对象的深拷贝
- Javascript中对象深拷贝的应用
- javascript 深度拷贝对象
- javascript对象拷贝
- Javascript拷贝对象方法
- javascript copy拷贝对象
- javascript 对象的深浅拷贝
- JavaScript 深拷贝 & 浅拷贝
- JavaScript JSON 对象深拷贝方法(一例)
- javascript 数组以及对象的深拷贝的方法
- [2001年写的小说]星际争霸之外传
- 五,A 访问FAT32分区
- 儿时的游戏
- 六,多媒体 A BMP
- 瞌睡一下午。
- Javascript对象深拷贝
- 如何在Web工程中实现任务计划调度--Tomcat定时器实现
- 新的开始
- 2.18,周未么?
- 你了解你自己的公司吗?
- 一个常见数据库操作错误的分析(六)
- 言自书
- JDBCTM 2.0 基本原理
- 如何用C#向ACCESS数据库插入图片?