js对象的深度克隆
在聊JavaScript(以下简称js)深度克隆之前,我们先来了解一下js中对象的组成。 在 js 中一切实例皆是对象,具体分为 原始类型 和 合成类型 : 原始类型 对象指的是 Undefined 、 Null 、 Boolean 、 Number 和 String ,按值传递。 合成类型 对象指的是 array 、 object 以及 function ,按址传递,传递的时候是内存中的地址。 克隆或者拷贝分为2种: 浅度克隆 、 深度克隆 。 浅度克隆 :基本类型为值传递,对象仍为引用传递。 深度克隆 :所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改。 又或许你刚听说“深度克隆”这个词,简单来说,就是说有个变量a,a的值是个对象(包括基本数据类型),现在你要创建一个变量b,使得它拥有跟a一样的方法和属性等等。但是a和b之间不能相互影响,即a的值的改变不影响b值的变化。直接赋值可好? var a = 1; var b = a; a = 10; console.log(b); // 1 var a = 'hello'; var b = a; a = 'world'; console.log(b); // hello var a = true; var b = a; a = false; console.log(b); //