JavaScript에서 객체로 작업할 때는 객체 참조와 객체 복사의 차이점을 이해하는 것이 중요합니다. 자세한 개요는 다음과 같습니다.
let obj1 = { name: "Alice" }; let obj2 = obj1; // obj2 now references the same object as obj1 obj2.name = "Bob"; console.log(obj1.name); // Output: "Bob"
let a = { key: "value" }; let b = { key: "value" }; console.log(a === b); // Output: false (different references) let c = a; console.log(a === c); // Output: true (same reference)
객체 복사에는 두 가지 주요 유형이 있습니다. 얕은 복사와 깊은 복사
얕은 복사 기술:
객체.할당():
let original = { name: "Alice", details: { age: 25 } }; let copy = Object.assign({}, original); copy.details.age = 30; console.log(original.details.age); // Output: 30 (shared reference)
확산 연산자(...):
let original = { name: "Alice", details: { age: 25 } }; let copy = { ...original }; copy.details.age = 30; console.log(original.details.age); // Output: 30 (shared reference)
두 방법 모두 얕은 복사본을 생성합니다. 즉, 중첩된 개체가 여전히 연결되어 있습니다.
딥 카피 기술:
JSON.parse() 및 JSON.stringify():
let original = { name: "Alice", details: { age: 25 } }; let copy = JSON.parse(JSON.stringify(original)); copy.details.age = 30; console.log(original.details.age); // Output: 25
StructuredClone()(최신 JavaScript):
let original = { name: "Alice", details: { age: 25 } }; let copy = structuredClone(original); copy.details.age = 30; console.log(original.details.age); // Output: 25
사용자 정의 라이브러리:
let obj1 = { name: "Alice" }; let obj2 = obj1; // obj2 now references the same object as obj1 obj2.name = "Bob"; console.log(obj1.name); // Output: "Bob"
Action | Result |
---|---|
Assignment (=) | Creates a reference. Changes to one variable affect the other. |
Shallow Copy | Creates a new object but retains references for nested objects. |
Deep Copy | Creates a completely independent object, including nested structures. |
결과
위 내용은 JavaScript 객체 참조 및 복사 이해 - 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!