JavaScript基于遍歷操作實(shí)現(xiàn)對象深拷貝功能示例
本文實(shí)例講述了JavaScript基于遍歷操作實(shí)現(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é)果可以看到,通過使用這個(gè)遍歷的方法,成功將對象test深拷貝復(fù)制一份,得到test1。并且更改test1對象的屬性,并不會(huì)對test對象產(chǎn)生影響。
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
JS實(shí)現(xiàn)自定義簡單網(wǎng)頁軟鍵盤效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)自定義簡單網(wǎng)頁軟鍵盤效果代碼,可實(shí)現(xiàn)簡單模擬鍵盤布局及響應(yīng)鼠標(biāo)點(diǎn)擊按下鍵盤按鍵功能,簡單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11基于javascript實(shí)現(xiàn)的購物商城商品倒計(jì)時(shí)實(shí)例
本文主要介紹了基于javascript實(shí)現(xiàn)的購物商城商品倒計(jì)時(shí)實(shí)例,代碼詳細(xì),可直接復(fù)制試試看效果。需要的朋友可以參考借鑒2016-12-12Enter轉(zhuǎn)換為Tab的小例子(兼容IE,Firefox)
這篇文章介紹了Enter轉(zhuǎn)換為Tab的小例子(兼容IE,Firefox),有需要的朋友可以參考一下2013-11-11Bootstrap中文本框的寬度變窄并且加入一副驗(yàn)證碼圖片的實(shí)現(xiàn)方法
這篇文章主要介紹了Bootstrap中文本框的寬度變窄并且加入一副驗(yàn)證碼圖片的實(shí)現(xiàn)方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06錯(cuò)誤剖析之JavaScript的9個(gè)陷阱及評點(diǎn)
錯(cuò)誤剖析之JavaScript的9個(gè)陷阱及評點(diǎn)...2007-08-08js字符串日期yyyy-MM-dd轉(zhuǎn)化為date示例代碼
獲取表單中的日期往后臺(tái)通過json方式傳的時(shí)候,遇到Date.parse(str)函數(shù)在ff下報(bào)錯(cuò),有類似情況的朋友可以參考下本文2014-03-03JavaScript高級程序設(shè)計(jì) 閱讀筆記(十二) js內(nèi)置對象Math
js內(nèi)置對象Math使用介紹, 需要的朋友可以參考下2012-08-08