[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

프로퍼티를 밀봉하거나 다른 수정 가능성을 제어함으로써 객체의 무결성을 유지할 수 있습니다. 이는 보안상의 이유나 실수를 방지하기 위해 유용할 수 있습니다.

참고 자료