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 스 트 리밍 알고리즘 및 기술 총화.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.