JavaScript에서 객체로 작업할 때 의도하지 않은 변경을 방지하려면 객체의 변경 가능성을 제어하는 것이 필수적입니다. 이를 위해 JavaScript에서 제공하는 두 가지 방법은 Object.freeze() 및 Object.seal()입니다. 차이점과 사용 사례를 이해하는 것이 강력한 코드를 작성하는 데 중요합니다.
Object.freeze() 메서드는 객체를 불변으로 만듭니다. 이는 다음을 의미합니다.
Object.freeze(obj);
const obj = { name: "Alice", age: 25 }; Object.freeze(obj); obj.age = 30; // Does nothing (strict mode: throws an error) obj.gender = "female"; // Does nothing (strict mode: throws an error) delete obj.name; // Does nothing (strict mode: throws an error) console.log(obj); // { name: "Alice", age: 25 }
객체가 동결되었는지 확인하려면 Object.isFrozen()을 사용하세요.
console.log(Object.isFrozen(obj)); // true
Object.seal() 메서드는 객체 수정을 제한하지만 Object.freeze()보다 덜 엄격합니다. 다음이 허용됩니다:
Object.seal(obj);
const obj = { name: "Bob", age: 30 }; Object.seal(obj); obj.age = 35; // Allowed: Existing properties can be modified obj.gender = "male"; // Does nothing (strict mode: throws an error) delete obj.name; // Does nothing (strict mode: throws an error) console.log(obj); // { name: "Bob", age: 35 }
객체가 봉인되었는지 확인하려면 Object.isSealed()를 사용하세요.
Object.freeze(obj);
Feature | Object.freeze() | Object.seal() |
---|---|---|
Add new properties | Not allowed | Not allowed |
Remove existing properties | Not allowed | Not allowed |
Modify existing properties | Not allowed | Allowed |
Reconfigure property descriptors | Not allowed | Not allowed |
Use case | Immutable objects (constants) | Restrict structure but allow value changes |
const obj = { name: "Alice", age: 25 }; Object.freeze(obj); obj.age = 30; // Does nothing (strict mode: throws an error) obj.gender = "female"; // Does nothing (strict mode: throws an error) delete obj.name; // Does nothing (strict mode: throws an error) console.log(obj); // { name: "Alice", age: 25 }
console.log(Object.isFrozen(obj)); // true
객체 변경 가능성으로 인한 혼란 방지: 팀 환경에서 오해를 피하기 위해 언제, 왜 객체가 동결되거나 봉인되었는지 명확하게 문서화하세요.
동결 전 봉인
위 내용은 JavaScript에서 Object.freeze() 및 Object.seal() 익히기: 객체 가변성 제어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!