less than 1 minute read

프로퍼티 플래그와 설명자

  • 객체 프로퍼티는 값(value)과 플래그 라 불리는 특별한 속성 세 가지 갖음

  • writable 이 true 이면 값을 수정할 수 있고 false 면 읽기만 가능 (에러는 엄격 모드에서만 발생함 )

  • enumerable 이 true 이면 반복문 사용해 나열 가능하고 false 면 나열 불가능 (keys 에도 배제)

  • configurable 이 true 이면 프로퍼티 삭제나 플래그 수정 가능하고 false 면 프로퍼티 삭제와 플래그 수정 불가능(writable이 true일 때 false로는 가능)

  • configurable 플래그 false로 설정 시 definedProperty 같은 메서드 써도 true로 되돌릴 수 없음

  • 지금까지 해왔던 방식으로 프로퍼티 만들면 해당 프로퍼티 플래그 모두 true

  • Object.definedProperty(obj, propertyName, descriptor) 는 obj(대상 객체) 의 propertyName(대상 프로퍼티) 에 descroptor(플래그 설명자)로 해당 플래그 변경

  • Object.getOwnPropertyDescriptor(obj, propertyName) 은 obj 의 propertyName (정보를 얻고자 하는 객체 내 프로퍼티. 없으면 새 프로퍼티 만듦) 의 프로퍼티 설명자(프로퍼티 값과 세 플래그 값 담김) 라는 객체 반환

  • Object.defineProperties(obj, descriptors) 로 프로퍼티 여러 개 한번에 정의 가능

  • Object.getOwnPropertyDescriptiors 로 해당 객체의 프로퍼티 설명자 전부 한번에 가져올 수 있음(플래그, 심볼형 프로퍼티 포함)

  • 객체 수정을 막아주는 다양한 메서드 존재