使用JSON.parse(),JSON.stringify()實現對物件的深拷貝
阿新 • • 發佈:2018-11-19
根據不包含引用物件的普通陣列深拷貝得到啟發,不拷貝引用物件,拷貝一個字串會新闢一個新的儲存地址,這樣就切斷了引用物件的指標聯絡。
測試例子:
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); //不影響test console.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()對物件的深拷貝!!!