javascript的一切实例都是对象,只是对象之间稍有不同,分为基本类型和引用类型。 基本类型对象指的是字符串(String)、数值(Number)、布尔值(Boolean),引用类型对象指的是数组(Array)、对象(Object)、函数(Function)。 这两类数据的 ...
javascript的一切实例都是对象,只是对象之间稍有不同,分为基本类型和引用类型。 基本类型对象指的是字符串(String)、数值(Number)、布尔值(Boolean),引用类型对象指的是数组(Array)、对象(Object)、函数(Function)。
这两类数据的引用有差别。普通对象存储的是对象的实际数据,而引用对象存储的是对象的引用地址,而把对象的实际内容单独存放,因为引用对象通常比较庞大,这是数据开销和内存开销优化的手段。 就像对象的原型一样,也是同一个概念。对象的原型也是引用对象,把原型的方法和属性放在单独内存当中,而对象的原型链则指向这个内存地址。
但有时我们需要的并不是指向内存区域的指针,而是内存中整个数据的备份(因为不想改动原数据)。不同的引用类型备份方法并不相同,于是我们对此封装了统一的深度复制接口。
1 function deepCopy(source) { 2 var result = {}; 3 for (var key in source) { 4 var type = Object.prototype.toString.call(source[key]); 5 switch (type) { 6 case "[object Number]": 7 case "[object String]": 8 result[key] = source[key]; 9 break;10 case "[object Array]":11 result[key] = source[key].slice(0);12 break;13 default:14 result[key] = deepCopy(source[key]);15 }16 }17 return result;18 }
原标题:深度复制实例分析
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。