工作积累(四)——JavaScript深度克隆的实现
2015-07-21 20:49
776 查看
JavaScript 中的数据有两种大类,即基本类型和引用类型。因为引用类型使用指针,所以在简单赋值时不能实现克隆,下面介绍两种方法来实现 JavaScript 深度克隆。
1. 原生JavaScript:
[code=js;toolbar:false">function clone(former) {
if(!(former instanceof Object)
|| former === null
|| (former instanceof RegExp)
|| (former instanceof Function)) {
return former;
}
if(former instanceof Array) {
return former.slice(); //或 return former.concat();
}
var latter = {};
for(var attr in former) {
latter[attr] = clone(former[attr]);
}
return latter;
}var obj2 = clone(obj1);
obj1 === obj2 // falsevar obj4 = {};
jQuery.extend(true, obj4, obj1);
obj1 === obj4 // false
1. 原生JavaScript:
[code=js;toolbar:false">function clone(former) {
if(!(former instanceof Object)
|| former === null
|| (former instanceof RegExp)
|| (former instanceof Function)) {
return former;
}
if(former instanceof Array) {
return former.slice(); //或 return former.concat();
}
var latter = {};
for(var attr in former) {
latter[attr] = clone(former[attr]);
}
return latter;
}var obj2 = clone(obj1);
obj1 === obj2 // falsevar obj4 = {};
jQuery.extend(true, obj4, obj1);
obj1 === obj4 // false
相关文章推荐
- JavaScript中的slice()和splice()
- JavaScript中的函数声明和函数表达式
- JavaScript中的面向对象(一)——创建自定义对象
- JsonModel&AFNetWorking
- JavaScript学习要点(五)
- 服务器采用JSON格式返回数据给安卓客户端
- JSONModel 简单例子
- js刷新窗口 (父窗口,以及点确定后的当前窗口) 一般用于页面数据刷新重新加载
- 实时显示裁剪的DEM生成的等高线
- javascript笔试面试题
- JavaScript继承方式详解
- avalon.js 多级下拉框实现
- JS的事件监听机制
- Extjs-Grid-动态生成columns
- [JSON] JSON入门指南
- maven 加入json-lib.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile
- js获取各种宽高方法
- Js_日期格式化
- 用UglifyJS2合并压缩混淆JS代码
- 详解js跨域问题