JavaScript基于遍歷操作實現(xiàn)對象深拷貝功能示例
本文實例講述了JavaScript基于遍歷操作實現(xiàn)對象深拷貝功能。分享給大家供大家參考,具體如下:
function getType(o){
var _t;
return ((_t = typeof(o)) == "object" ? o==null && "null" || Object.prototype.toString.call(o).slice(8,-1):_t).toLowerCase();
}
function extend(destination,source){
for(var p in source){
if(getType(source[p])=="array"||getType(source[p])=="object"){
destination[p]=getType(source[p])=="array"?[]:{};
arguments.callee(destination[p],source[p]);
}else{
destination[p]=source[p];
}
}
}
var test={
a:"ss",
b:"dd",
c:[
{d:"css",e:"cdd"},
{
m:"ff",
n:[
{kk:"11",jj:"22"},
{ll:"44"}
]
}
]
};
var test1={};
extend(test1,test);
console.log(test);
console.log(test1);
test1.c[1].n[0].kk="change"; //改變test1的c屬性對象的d屬性
console.log(test);
console.log(test1);
console.log(test.c[1].n[0]);
console.log(test1.c[1].n[0]);
測試結(jié)果

從測試結(jié)果可以看到,通過使用這個遍歷的方法,成功將對象test深拷貝復(fù)制一份,得到test1。并且更改test1對象的屬性,并不會對test對象產(chǎn)生影響。
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
JS基于ocanvas插件實現(xiàn)的簡單畫板效果代碼(附demo源碼下載)
這篇文章主要介紹了JS基于ocanvas插件實現(xiàn)的簡單畫板效果,結(jié)合實例形式分析了ocanvas插件實現(xiàn)畫板的相關(guān)技巧,并附代碼demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04
JS promise 的回調(diào)和 setTimeout 的回調(diào)到底誰先執(zhí)行
本文主要介紹了JS promise 的回調(diào)和 setTimeout 的回調(diào)到底誰先執(zhí)行,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
js實現(xiàn)統(tǒng)計字符串中特定字符出現(xiàn)個數(shù)的方法
這篇文章主要介紹了js實現(xiàn)統(tǒng)計字符串中特定字符出現(xiàn)個數(shù)的方法,涉及javascript針對字符串中字符運算操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
Bootstrap基本插件學(xué)習(xí)筆記之Popover提示框(19)
這篇文章主要為大家詳細介紹了Bootstrap基本插件學(xué)習(xí)筆記之Popover提示框的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12

