[javascript] 객체의 프로퍼티를 밀봉하는 방법
자바스크립트에서 객체를 만들고 나서 속성을 추가하거나 제거할 수 있지만, 때로는 특정 프로퍼티의 추가, 삭제, 혹은 속성 값의 수정을 막아야 할 때가 있습니다. 이럴 때 프로퍼티 밀봉(Sealing) 기능을 사용할 수 있습니다.
1. 객체의 프로퍼티 밀봉하기
1.1. Object.seal()
Object.seal()
메서드를 사용하여 객체를 밀봉할 수 있습니다. 밀봉된 객체의 프로퍼티는 추가, 삭제가 불가능하지만, 값의 수정은 가능합니다.
let obj = {
name: 'John',
age: 30
};
Object.seal(obj);
obj.name = 'Jane'; // 가능
delete obj.age; // 불가능
obj.gender = 'male'; // 불가능
1.2. Object.isSealed()
밀봉된 객체인지 확인하기 위해 Object.isSealed()
메서드를 사용할 수 있습니다.
console.log(Object.isSealed(obj)); // true
2. 객체의 프로퍼티 밀봉 여부 확인하기
2.1. Object.preventExtensions()
Object.preventExtensions()
를 사용하여 새로운 프로퍼티를 추가할 수 없도록 객체를 설정할 수 있습니다.
let obj2 = {
name: 'Lisa',
age: 25
};
Object.preventExtensions(obj2);
obj2.name = 'Lily'; // 가능
obj2.gender = 'female'; // 불가능
2.2. Object.isExtensible()
밀봉이나 확장이 막힌 객체인지 확인하기 위해 Object.isExtensible()
메서드를 사용할 수 있습니다.
console.log(Object.isExtensible(obj2)); // false
프로퍼티를 밀봉하거나 다른 수정 가능성을 제어함으로써 객체의 무결성을 유지할 수 있습니다. 이는 보안상의 이유나 실수를 방지하기 위해 유용할 수 있습니다.