제 이 슨 대상 에 대한 깊 은 복사

3301 단어
이틀 전 프로그램 을 썼 는데 하 나 는 백 스테이지 에서 돌아 온 제 이 슨 데 이 터 를 정리 한 다음 에 사용 한 것 으로 제 이 슨 에 대한 복사 본 을 사용 했다.나 는 나의 블 로그 에서 배열 에 대한 복사 본 을 언급 한 적 이 있다.깊이 복사 와 얕 은 복사 로 나 뉜 다.여기에 링크 를 붙 여 주세요. 사실은 배열 에 대한 복사 가 비교적 간단 하 다. 자신 이 순환 한 다음 에 새로운 배열 에 넣 거나 내 블 로그 에서 언급 한 사용 이다. slice (0) 의 방법. 
같은 json 데이터 복사 에 도 같은 간단 한 방법 이 있 습 니 다. var 새 대상 = JSON. parse (JSON. stringify (오래된 대상);이렇게 해서 이 오래된 상 대 를 복제 했다.하지만 이 는 단점 이 있다.(백 스테이지 에서 전 송 된 데 이 터 는 문제 가 없습니다.)단점 은 이 오래된 대상 에서 단순 한 데이터 가 아니 라 방법 을 정의 했다 면 할당 에 성공 할 수 없다 는 것 이다.
그렇다면 스스로 쓰 는 방법, 스스로 쓰 는 정도 로 복사 할 수 밖 에 없 는 것 일 까?답 은?에 스 6 는 이미 이 점 을 생각 했 기 때문에 에 스 6 의 문법 에 object. assign () 이라는 방법 이 있다. 정부 에서 이 방법 에 대해 이렇게 설명 했다. Object.assign() 방법 은 모든 속성 값 을 하나 이상 의 원본 대상 에서 대상 으로 복사 하 는 데 사 용 됩 니 다.그것 은 목표 대상 으로 돌아 갈 것 이다.대상 의 속성 이 같은 키 를 가지 고 있다 면 속성 은 원본 의 속성 으로 덮어 씁 니 다.나중에 원본 의 속성 은 이전의 속성 을 유사 하 게 덮어 씁 니 다.그리고 우 리 는 즐겁게 복제 할 수 있 을 것 이다.아래 코드 보 세 요.
 1         var json1 = {
 2             "name":"cheng",
 3             "age":18,
 4             "fun":function(a){
 5                 console.log(a);
 6             }
 7         }
 8         //json1.fun(123);
 9         console.log(json1);
10         for(i in json1){
11             if(i=="age"){
12                 json1[i] = 19;
13             }
14         }
15         var json2 = JSON.parse(JSON.stringify(json1));
16         //var json2 = Object.assign({},json1);
17         json2.age = 20;
18         console.log(json1,json2);

이렇게 하면 제 이 슨 의 데 이 터 를 복사 할 수 있다.여기에 적어 주세요.

좋은 웹페이지 즐겨찾기