改進(jìn)版通過Json對象實(shí)現(xiàn)深復(fù)制的方法
更新時(shí)間:2012年10月24日 21:40:09 作者:
改進(jìn)版通過Json對象實(shí)現(xiàn)深復(fù)制的方法,需要的朋友可以參考下
之前看到博客的關(guān)于Json對象的深復(fù)制方法,即
var obj = {
sayName: function() {
alert(this.name);
},
name:'靜水淵'
};var cloneObj=JSON.parse(JSON.stringify(obj));cloneObj.sayName();
但這種方式,不能復(fù)制屬性值是函數(shù)的屬性,因此改進(jìn)了方法,以下是具體代碼:
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();
因?yàn)檫€沒有全面測試過,歡迎拍磚!
復(fù)制代碼 代碼如下:
var obj = {
sayName: function() {
alert(this.name);
},
name:'靜水淵'
};var cloneObj=JSON.parse(JSON.stringify(obj));cloneObj.sayName();
但這種方式,不能復(fù)制屬性值是函數(shù)的屬性,因此改進(jìn)了方法,以下是具體代碼:
復(fù)制代碼 代碼如下:
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();
因?yàn)檫€沒有全面測試過,歡迎拍磚!
相關(guān)文章
用nodejs寫的一個(gè)簡單項(xiàng)目打包工具
項(xiàng)目是模塊加載的,類似require.js的用法,所以簡單寫了一個(gè)js打包工具2013-05-05
Ajax+Json 級聯(lián)菜單實(shí)現(xiàn)代碼
Ajax+Json 級聯(lián)菜單實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-10-10
用JSON做數(shù)據(jù)傳輸格式中的一些問題總結(jié)
Json 憑借其自身的優(yōu)勢,在Web數(shù)據(jù)處理方面已經(jīng)占據(jù)了一定的位置,這段時(shí)間涉及到用Json做為數(shù)據(jù)傳輸格式的項(xiàng)目有3個(gè),其中有部分頁面就采用了Json 數(shù)據(jù)傳輸格式, 這里我總結(jié)下這段時(shí)間采用這種方式的一些問題總結(jié)2011-12-12
淺談JsonObject中的key-value數(shù)據(jù)解析排序問題
下面小編就為大家分享一篇淺談JsonObject中的key-value數(shù)據(jù)解析排序問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
JSON 入門教程基礎(chǔ)篇 json入門學(xué)習(xí)筆記
剛開始接觸json的時(shí)候感覺有點(diǎn)奇怪的命名,后來使用才發(fā)現(xiàn)這么簡單而且用好用,擴(kuò)展性很強(qiáng),這里就為大家整理一下2020-09-09

