객체 변경 방지

정인호·2022년 10월 9일
0

위코드-개념정리

목록 보기
18/19

객체 확장 금지

object.preventExtensions 메서드는 객체의 확장을 금지한다.
추가 할때쓰는 object.defineProperty 메서드를 써도 추가가 되지 않는다.

const person = { name: "alan"};

//확장 가능을 판별하는 메서드
console.log(Object.isExtensible(person));
//true

Object.preventExtensions(person);
//확장을 금지 시킴

console.log(Object.isExtensible(person));
//false

person.age = 20;
console.log(person);
//{name: "alan"}
//객체의 프로퍼티가 추가 되지 않음.

delete person.name;
console.log(person);
// {}
//추가는 안되지만 삭제는 된다.

Object.defineProperty(person, 'age', {value: 20});
//TypeError: Cannot define Property age, object is not extensible
//프로퍼티 재정의에 의한 프로퍼티 추가도 금지된다.

객체 밀봉

Object.seal 메서드는 객체를 밀봉한다. 이는 프로퍼티 추가 및 삭제와 프로퍼티 어트리뷰트 재정의 금지를 의미한다. 읽기와 쓰기만 가능하다.

const person = {name: 'alan"}

console.log(Object.isSealed(person));
//false
//밀봉됐는지 확인

Object.seal(person);
//객체 밀봉

console.log(Object.isSealed(person));
//true

console.log(Object.getOwnPropertyDescriptors(person)

person.age = 20;
console.log(person);
//{name: 'alan'}
//객체 추가 금지

delete person.name;
console.log(person);
//{name: 'alan'}
//객체 삭제 금지

person.name = 'kim';
console.log(person);
//{name: 'kim'}
//프로퍼티 값 갱신은 가능하다.
profile
경제학과를 졸업후 개발에 뛰어든 햇병아리입니다.

0개의 댓글