本文實例講述了JS使用JSON.parse(),JSON.stringify()實現對對象的深拷貝功能。分享給大家供大家參考,具體如下:
根據不包含引用對象的普通數組深拷貝得到啟發,不拷貝引用對象,拷貝一個字符串會新辟一個新的存儲地址,這樣就切斷了引用對象的指針聯系。
測試例子:
var test={ a:"ss", b:"dd", c:[ {dd:"css",ee:"cdd"}, {mm:"ff",nn:"ee"} ]};var test1 = JSON.parse(JSON.stringify(test));//拷貝數組,注意這行的拷貝方法console.log(test);console.log(test1);test1.c[0].dd="change"; //改變test1的c屬性對象的d屬性console.log(test); //不影響testconsole.log(test1);
測試結果:
根據測試結果,我們可以看到,test1已經從test復制一份,并且test1改變其中屬性的值時,對原來的對象test沒有造成影響。
JSON.parse(),JSON.stringify()兼容性問題
可以通過為IE7以及IE7以下版本的IE瀏覽器引入json2.js,使用json2.js來解決JSON的兼容性問題
<!--[if lt IE 7]><script src="具體放路徑/json2.js"></script> <![endif]-->
json2.js的github地址為:https://github.com/douglascrockford/JSON-js
好了,到這里就實現了,使用JSON.parse()
,JSON.stringify()
對對象的深拷貝~~
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
新聞熱點
疑難解答