使用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);  //不影響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()對對象的深拷貝~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM