[转载] javascript实现深度克隆】的更多相关文章

js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递: 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内存中的地址. 克隆或者拷贝分为2种: 浅度克隆:基本类型为值传递,对象仍为引用传递. 深度克隆:所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改. 大白话深度克隆和浅克隆:http://blog.csdn.net/java2000_net/artic…
javascript最新深度克隆对象方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http…
1.JavaScript的五种基本数据类型: Number.String.Boolean.null.undefined. 2.typeof返回的六种数据类型: Number.String.Boolean.undefined.function.object. 其中object为复式数据类型,它包含null,array,json等复式数据. 3.对象(object)引用 对象类型(复式数据类型)在内存空间中只占一个内存空间,其变量名就是对该对象所在空间的地址的引用. var b=a=[1,2,3];…
先看一下克隆成功后的结果 深度克隆就是将obj的属性克隆到obj1上面,并且在obj上面修改属性不影响obj1上面的属性. 1.先把所有的值都遍历一遍(看是引用值和原始值)用for ( var prop in obj ),对象和数组都可以使用2.判断是原始值,还是引用值?用typeof判断是不是object1)如果是原始值就直接拷贝2)如果是引用值,判断是数组还是对象3.判断是数组还是对象?(方法instanceof[看a的原型链上有没有b的原型].toString.constructor,建议…
<script type="text/javascript"> var obj={ name:'段丛磊', gex:18, sss:['李伟',18], fun:function(){ name='李伟' gex=18 } } var obj1={}; var init=function(right1,left1){ var left1=left1||{}, //当用户传入的有东西就用用户提供的,没有就自己给一个{}对象 toStr=Object.prototype.toS…
JavaScript实现对象的深度克隆 代码实现如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>clone</title> <script type="text/javascript"> //对象深度克隆方法 //////////给Object添加一个clone()…
记录一个常见的面试题,javascript中对象的深度克隆,转载自:http://www.2cto.com/kf/201409/332955.html 今天就聊一下一个常见的笔试.面试题,js中对象的深度克隆.翻了下这个题目,在很多地方出现过,已经算一个老的题目了,但是每年的校招中总会考到,其实想想,这个题目考查的知识点还是蛮多的,尤其是对基础知识的考查.好了,闲话不多说,开始正题. 一.js中的对象   谈到对象的克隆,必定要说一下对象的概念.   js中的数据类型分为两大类:原始类型和对象类…
1.javascript深度克隆: //注意这里的对象包括object和array function cloneObject(obj){ var o = obj.constructor === Array ? [] : {}; for(var key in obj){ if(obj.hasOwnProperty(key)){ o[key] = typeof obj[key] === "object" ? cloneObject(obj[key]) : obj[key]; } } ret…
Javascript中的对像赋值与Java中是一样的,都为引用传递.就是说,在把一个对像赋值给一个变量时,那么这个变量所指向的仍就是原来对 像的地址.那怎么来做呢?答案是“克隆”. 克隆有两种方法:一种是“浅克隆”,一种是“深克隆”(深度克隆). 浅克隆:基本类型为值传递,对象仍为引用传递. 深克隆(深度克隆):所有元素均完全复制,并于原对象完全独立(原对象的修改不影响新对象). 深度克隆的代码如下(深克隆去掉递归即为浅克隆): Object.prototype.clone = function…
javascript深度克隆函数deepClone function deepClone(obj) { var _toString = Object.prototype.toString; // null, undefined, non-object, function if (!obj || typeof obj !== 'object') { return obj; } // DOM Node if (obj.nodeType && 'cloneNode' in obj) { retu…