改进版通过Json对象实现深复制的方法
2012-10-24 00:00
756 查看
之前看到博客的关于Json对象的深复制方法,即
但这种方式,不能复制属性值是函数的属性,因此改进了方法,以下是具体代码:
因为还没有全面测试过,欢迎拍砖!
var obj = { sayName: function() { alert(this.name); }, name:'静水渊' };var cloneObj=JSON.parse(JSON.stringify(obj));cloneObj.sayName();
但这种方式,不能复制属性值是函数的属性,因此改进了方法,以下是具体代码:
var obj = { sayName: function() { alert(this.name); }, name:'静水渊' }; function clone(){ var str,newObj; str= JSON.stringify(obj, function(key, value) { return (typeof value == 'function' ? value.toString().replace(/^function(.*)/g, "jsonFunction$1") : value); }); newObj = JSON.parse(str, function (key, value) { if (/^jsonFunction(.*)/.test(value)) { var strFun = '('+value.replace(/^jsonFunction(.*)/, "function$1")+')'; value = eval(strFun); } return value; }); return newObj; } var cloneObj=clone(obj); cloneObj.sayName();
因为还没有全面测试过,欢迎拍砖!
相关文章推荐
- 改进版通过Json对象实现深复制的方法
- 通过jsonObject toBean方法,实现对象的实例化
- Json字符串转换为java对象的各种实现方法
- jQuery的ajax()检验用户名;通过jQuery的load()/get()/post()方法实现;使用XMLHTTPRequest对象来进行AJAX的异步数据交互
- 通过实现接口 ICloneable 复制对象
- javascript中创建对象,并序列化为json,通过$.ajax的提交json数据到后台方法,取值为null的问题
- json对象与数组以及转换成js对象的简单实现方法
- .Net3.5扩展方法实现对象JSON序列化
- php实现数组中索引关联数据转换成json对象的方法
- js实现复制对象、扩展对象 方法
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- ThinkPHP通过AJAX返回JSON的两种实现方法
- java中两个对象间的属性值复制,比较,转为map方法实现
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
- JavaScript 复制对象【Object.assign方法无法实现深复制】
- Rhyme/Java 设计模式之原型模式prototype通过clone方法和反序列化实现深复制
- 通过json-lib实现Java对象和json字符串的相互转换
- 有关序列化实现引用对象深度复制的几种方法 !
- 自定义实现Json字符串向C#对象转变的方法
- ThinkPHP通过AJAX返回JSON的两种实现方法