json对象实现深度克隆

author author     2023-04-23     355

关键词:

cloneObj = function(obj)
var newobj = obj.constructor === Object ? : [];
if(typeof JSON === 'object')
var s = JSON.stringify(obj), //系列化对象
newobj = JSON.parse(s); //反系列化(还原)
else
if(newobj.constructor === Array)
newobj.concat(obj);
else
for(var i in obj)
newobj[i] = obj[i];



return newobj;
;
这是js深度克隆的一般实现,这儿JSON这个对象为什么一直没有查到,JSON对象所带的方法如Stringify是新定义的???

JSON 是 ecma5新定义的对象,你要在 现代浏览器中才能有,如果你用ie6这样的浏览器就找不到,这个是先检查有没有JSON这个对象有的话就用这个对象深拷贝,没有的话自己实现,你这个自己实现的方法,不是深度拷贝,而是浅拷贝 参考技术A cloneObj = function(obj)
var newobj = obj.constructor === Object ? : [];
if(typeof JSON === 'object')
var s = JSON.stringify(obj), //系列化对象
newobj = JSON.parse(s); //反系列化(还原)
else
if(newobj.constructor === Array)
newobj.concat(obj);
else
for(var i in obj)
newobj[i] = obj[i];



return newobj;
参考技术B 百度百度百度

原型模式

...】原型模式的功能实际上包括两个方面:实例化一个新的对象实例。为这个新的对象实例复制原型对象属性的值。本质是《深度克隆》生成新对象。通过克隆复制对象比构造器new的速度快得多,特别是复制大对象时。因为克隆直... 查看详情

ife2015深度克隆题目

...是://使用递归来实现一个深度克隆,可以复制一个目标对象,返回一个完整拷贝 //被复制的对象类型会被限制为数字、字符串、布尔、日期、数组、Object对象。不会包含函数、正则对象等首先要去判断要克隆的对象的值类... 查看详情

用于深度克隆的单元测试

...假设我有一个复杂的.NET类,其中包含许多数组和其他类对象成员。我需要能够生成该对象的深度克隆——所以我编写了一个Clone()方法,并使用简单的BinaryFormatter序列化/反序列化来实现它——或者我可能使用其他一些更容易出错... 查看详情

原型模式(代码片段)

...点(二)、原型模式的缺点一、原型模式Prototype模式是一种对象创建型模式,通过复制自己进行创建。(一)、原型模式的特点由原型对象自身创建目标对象,也就是说,对象创建这一动作发自原型对象本身。目标对象是原型对象的... 查看详情

43.对象深度克隆

1<!DOCTYPEhtml>2<html>3<headlang="en">4<metacharset="UTF-8">5<title>对象深度克隆</title>6</head>7<body>8</body>910<script>11//对象深度克隆12functionclon 查看详情

深度克隆实用程序推荐 [关闭]

...决方案,但使用Object.clone()方法。我可以确定我的自定义对象将实现clone()方法,并且将仅使用可克隆的java标准类...【问题讨论】:Howdoyo 查看详情

深度克隆实用程序推荐 [关闭]

...决方案,但使用Object.clone()方法。我可以确定我的自定义对象将实现clone()方法,并且将仅使用可克隆的java标准类...【问题讨论】:Howdoyo 查看详情

java面试之对象拷贝

61.为什么要使用克隆?克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。62.如何实现对象克隆?实现Cloneable... 查看详情

java面试之对象拷贝

61.为什么要使用克隆?克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。62.如何实现对象克隆?实现Cloneable... 查看详情

java中的浅克隆和深克隆是啥

克隆是指克隆对象,在堆空间复制一块内存,是完全的两个对象,不是指针指向!浅克隆是指克隆一个对象,而该对象的属性只是基本数据类型,只克隆出该对象!深度克隆是指克隆的目标里面还有引用类型,引用类型里还有引... 查看详情

javascript深度克隆对象(代码片段)

查看详情

javascript对象的深度克隆

在做项目的时候需要向对象里面添加新属性,又不想修改原对象。于是就写:varnewObj=oldObj,但是新对象属性改变后就对象也会跟着改变,这是因为无论是新对象还是旧对象,指向的内存地址都是一样的,改变了谁都改变了内存中的... 查看详情

深度克隆---js对象引用

...g,boolean,null,undefined)之外就是引用类型了,也可以说就是js对象了。引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。在探讨到深度克隆之前,我们先来看一下下面... 查看详情

PHP 深度克隆对象

】PHP深度克隆对象【英文标题】:PHPdeepcloneobject【发布时间】:2012-06-0514:29:38【问题描述】:场景:从数据库中获取一个电子邮件模板,并遍历收件人列表,为每个收件人个性化电子邮件。我的电子邮件模板作为嵌套对象返回。... 查看详情

克隆解析服务器对象

】克隆解析服务器对象【英文标题】:CloneParseServerobject【发布时间】:2017-05-1721:07:16【问题描述】:我有一个Parse对象(嗯,一个解析对象数组)。我想克隆对象,但我尝试的一切都失败了……因为更改原始对象属性也会更改克... 查看详情

克隆_浅拷贝和深拷贝

1.为什么要使用克隆?想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了,Java语言中克隆针对的是类的实例。2. 如何实现对象克隆?有两种方式:1).实现Cloneable接口并重写Object类中的clone()方法;... 查看详情

javascript深度克隆vue对象数据

//深度克隆functiondeepClone(obj){varoType=getObjectType(obj);if(oType=="Object"){varresult={}for(keyinobj){result[key]=deepClone(obj[key]);}returnresult;}elseif(oType=="Array"){varresult=[];for(vari=0;i&l 查看详情

在 JavaScript 中深度克隆对象的最有效方法是啥?

】在JavaScript中深度克隆对象的最有效方法是啥?【英文标题】:WhatisthemostefficientwaytodeepcloneanobjectinJavaScript?在JavaScript中深度克隆对象的最有效方法是什么?【发布时间】:2010-09-1210:25:28【问题描述】:克隆JavaScript对象最有效的... 查看详情