javascript 딥 복사 의 원리 와 실현 방법 분석
자 바스 크 립 트 의 복사 본 을 이야기 하려 면 자 바스 크 립 트 의 값 전달 과 인용 전달 을 먼저 이야기 해 야 한다.
javascript 에 서 는 어떤 매개 변수 가 인용 전달 인지 규정 하 는 구체 적 인 문법 이 없 으 며,다른 언어 에 서 는 C\#의 ref 와 PHP 의&와 같은 명문 규정 이 있 습 니 다.
이것 도 자 바스 크 립 트 의 많은 폐단 중의 하나 다.
우 리 는 먼저 아래 의 이 코드 를 보 자.
//
var i = 3;
var j = i;
j = 4;
document.write(i);//3
//
var m = [1];
var n = m;
n[0] = 2;
document.write(n[0]);//2
이 는 자바 script 에서 간단 한 유형 만 값 전달 이 고 다른 복잡 한 유형,예 를 들 어 배열,대상 은 모두 기본 값 으로 전달 을 참조 하 는 것 임 을 나타 낸다.그럼 우리 가 대상 을 복사 해 야 한다 면?방법 을 스스로 정의 해 야 합 니 다.
// ,
function cloneObject(srcobj){
var tarobj=new Object();
for(var key in srcobj){//
tarobj[key]=typeof srcobj[key]==='object'?cloneObject(srcobj[key]):srcobj[key];
}
return tarobj;
}
//
// :
var srcObj = {
a: 1,
b: {
b1: ["hello", "hi"],
b2: "JavaScript"
}
};
var abObj = srcObj;//
var tarObj = cloneObject(srcObj);
srcObj.a = 2;
srcObj.b.b1[0] = "Hello";
console.log(abObj.a);//2
console.log(abObj.b.b1[0]);//Hello, =
console.log(tarObj.a); // 1
console.log(tarObj.b.b1[0]); // "hello",
사실은 새로운 대상 을 실례 화하 여 더미 속 에 새로운 메모리 공간 을 열 어 창고 안의 변수 이름 이 더미 속 의 새로운 내용 을 가리 키 게 하 는 것 이다.자 바스 크 립 트 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.