js之深度克隆、简易克隆
一、js中的对象 谈到对象的克隆,必定要说一下对象的概念。 js中的数据类型分为两大类:原始类型和对象类型。 (1)原始类型包括:数值、字符串、布尔值、null、undefined(后两个是特殊的原始值,这里不做详细的说明,我的上一篇博客有谈到过一些) (2)对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象----函数(js中的一等对象)、数组(键值的有序集合)。 好了既然对象分为这两类,这两种类型在复制克隆的时候是有很大区别的。原始类型存储的是对象的实际数据,而对象类型存储的是对象的引用地址(对象的实际内容单独存放,为了减少数据开销通常存放在内存中)。ps:说到这里,大家要知道,对象的原型也是引用对象,它把原型的方法和属性放在内存当中,通过原型链的方式来指向这个内存地址。 二、克隆的概念 浅度克隆:原始类型为值传递,对象类型仍为引用传递。 深度克隆:所有元素或属性均完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中。 三、浅克隆的表现 1,原始类型 看下面一段代码: //数值克隆的表现 var a="1"; var b=a; b="2"; console.log(a);// "1" console.log(b);// "2" //字符串克隆的表现 var c="1"; var d=c; d="2";