js对象深拷贝的简单实现
2013-11-25 00:00
826 查看
实现代码:
测试代码以及运行结果:
ps: 上述代码只是深拷贝的简单实现,当遇到两个互相引用的对象,会出现死循环的情况!
Object.prototype.clone = function() { var newObj = {}; for (var i in this) { if (typeof(this[i]) == 'object' || typeof(this[i]) == 'function') { newObj[i] = this[i].clone(); } else { newObj[i] = this[i]; } } return newObj; }; Array.prototype.clone = function() { var newArray = []; var length = this.length; for (var i = length; i--;) { if (typeof(this[i]) == 'object' || typeof(this[i]) == 'function') { newArray[i] = this[i].clone(); } else { newArray[i] = this[i]; } } return newArray; }; Function.prototype.clone = function() { var that = this; var newFunc = function() { return that.apply(this, argunets); }; for (var i in this) { newFunc[i] = this[i]; } return newFunc; };
测试代码以及运行结果:
var obj = { name: 'void', contents: ['node'], display: function() { console.log(this.name); }, }; var newObj = obj.clone(); newObj.contents.push('test'); console.log(obj.contents);//输出 ['node'] console.log(newObj.contents);//输出 ['node', 'test'] console.log(newObj.display == obj.display);//输出 false
ps: 上述代码只是深拷贝的简单实现,当遇到两个互相引用的对象,会出现死循环的情况!
相关文章推荐
- js实现的对象深拷贝
- JS中实现数组和对象的深拷贝和浅拷贝
- js内置对象处理_打印学生成绩单的简单实现
- js中实现数组与对象的深拷贝
- JS的继承是从一个对象原型向另一个对象原型的简单拷贝
- 实现对象深拷贝的简单案例
- json对象与数组以及转换成js对象的简单实现方法
- js实现数组和对象的深浅拷贝
- Node.js的学习日记 图片简单下载和拷贝功能的实现 简单下载和拷贝
- js实现以最简单的方式将数组元素添加到对象中的方法
- JS JSON对象转为字符串的简单实现方法
- Java通过反射实现简单对象的拷贝
- json对象与数组以及转换成js对象的简单实现方法
- JS JSON对象转为字符串的简单实现方法
- JavaScript对象的浅拷贝和深拷贝简单实现
- JS JSON对象转为字符串的简单实现方法
- json对象与数组以及转换成js对象的简单实现方法
- js对象转json数组的简单实现案例
- 利用js-对象实现简单的动态论坛页面
- js实现数组和对象的深浅拷贝