어제 밤에 Dacheng Xiaopang의 웨이보에서 이 글을 보고 매우 관심을 갖고 표시했습니다.
오늘은 왜 순수 데이터 json 객체의 deep cloning이 한 문장으로 이루어질 수 있는지 정보를 정리하고 분석했습니다.
위 소개에서 이 함수는 객체나 배열을 json 문자열로 변환하는 것을 볼 수 있습니다.
위 소개에서 볼 수 있듯이 이 함수는 json 문자열을 객체나 배열로 변환합니다.
위 결과에서 배열이 실제로 깊이가 있음을 발견했습니다. 복제되었습니다.
var obj = {name:'rey',info:{location:'beijing',age:'28'}}
var objCloned = JSON.parse(JSON.stringify(obj)); 🎜>console.log(obj);
console.log(JSON.stringify(obj))
console.log(objCloned)
console.log(JSON.stringify(objCloned)); 🎜>objCloned .name = 'luopan';
console.log(JSON.stringify(obj));
console.log(objCloned); log(JSON .stringify(objCloned))
실험 결과:
위의 실험에서 이 방법으로 객체를 복제할 수도 있음을 확인했습니다.
4. 하지만 위의 모든 실험은 순수 데이터에 대한 것입니다. 즉, 이 방법은 순수 데이터의 배열이나 개체 복제에만 효과적입니다.
불순한 데이터를 사용한 실험:
var obj = {name:'rey',info:{location:'beijing',age:'28'},hello:function(){console.log('hello world!');}} ;
var objCloned = JSON.parse(JSON.stringify(obj));
console.log(obj)
console.log(JSON.stringify(obj)); (objCloned );
console.log(JSON.stringify(objCloned));
objCloned.name = 'luopan'
console.log(JSON.stringify (obj ));
console.log(objCloned);
console.log(JSON.stringify(objCloned))
실험 결과
>
위의 실험 결과에서 순수하지 않은 데이터의 함수는 변환에 참여할 수 없으며 "멸시"된다는 것을 알 수 있습니다.
그래서 이 한 문장 딥 클로닝 방식은 순수 데이터에만 적용되는 방식이므로 개발 시 주의해야 할 부분입니다.