JS 대상 깊이 클론 사례 분석

2343 단어 JS대상딥 클론
본 고의 실례 는 JS 대상 의 깊이 있 는 복 제 를 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
먼저 예 를 하나 봅 시다.

var student = {
  name:"yxz",
  age:25
}
var newStudent = student;
newStudent.sex = "male";
console.log(student); //{name:"yxz",age:25,sex:"male"}

이 를 통 해 알 수 있 듯 이 한 대상 을 간단 한 전달 할당 을 통 해 새로운 변수 에 전달 할 때 이 대상 에 게 별명 만 추가 한 것 이다.따라서 이 별명 에 대한 조작 도 원래 대상 에 작용 하기 때문에 new Student.sex 를 통 해 대상 student 에 속성 을 추가 하면 가능 합 니 다.그러나 더 많은 경우 에 우 리 는 new Student 와 student 대상 이 독립 되 기 를 바 랍 니 다.그러면 원래 대상 의 사본 을 만들어 야 합 니 다.아래 의 예 를 보 세 요.

var cloneObj = function(obj){
  var str, newobj = obj.constructor === Array ? [] : {};
  if(typeof obj !== 'object'){
    return;
  } else if(window.JSON){
    str = JSON.stringify(obj), //     
    newobj = JSON.parse(str); //  
  } else {
    for(var i in obj){
      newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i]; 
    }
  }
  return newobj;
};
//  
var student = {
  name:"yxz",
  age:25,
  sex:"male"
};
//      
var newStudent = cloneObj(student);
delete newStudent.sex;
console.log(newStudent); //{name:"yxz",age:25}
console.log(student); //{name:"yxz",age:25,sex:"male"}

실행 결 과 를 통 해 알 수 있 듯 이 뉴 스 튜 던 트 는 복 제 된 사본 이 되 었 고 뉴 스 튜 던 트 에 대한 어떠한 조작 도 학생 대상 에 영향 을 주지 않 을 것 이다.
비고:JSON.stringify 와 parse 는 각각 JSON 대상 의 직렬 화 와 반 직렬 화 함수 입 니 다.즉,대상 을 문자열 로 정렬 하고 json 문자열 을 대상 으로 반 직렬 화 하 는 것 을 책임 집 니 다.이것 은 ECMAScript 5 규범 에 속 하기 때문에 위의 프로그램 표시 부분 은 호 환 처 리 를 했 습 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,javascript 대상 입문 강좌,JavaScript 오류 및 디 버 깅 기술 요약,JavaScript 데이터 구조 와 알고리즘 기술 총화JavaScript 스 트 리밍 알고리즘 및 기술 총화.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기