[JS]Property_Attributes

Empu·2023년 9월 28일

javaScript

목록 보기
1/5
post-thumbnail

✔︎ 정의

JavaScript에서 객체의 속성 (property)은 다양한 속성(attribute)을 가질 수 있다.
속성을 부여할 때 내부 상태값인 내부 슬롯이 property attributes이다. 

✔︎ 프로퍼티의 종류

📌 데이터 프로퍼티(data-property)

= 키와 값으로 형성된 실질적 값을 갖고있는 프로퍼티

1)value - 실제 프로퍼티 값
2)writable - 값을 수정 할 수 있는지 여부. false로 설정하면 프로퍼티 값을 수정 할 수 없다.
3)enumrable - 열거가 가능한지 여부이다. for...in 룹 등을 사용 할 수 있으면 true를 반환한다.
4)configurable - 프로퍼티 어트리뷰트의 재정의가 가능한지 여부를 판단한다. 
				false일 경우 프로퍼티 삭제나 어트리뷰트 변경이 금지된다.
				단 writable이 true인 경우 값 변경과 writable변경하는건 가능하다.
                

📌 엑세서 프로퍼티(accessor-property)

= 자체적으로 값을 갖고 있지 않지만 다른 값을 가져오거나 생성할때 
호출되는 함수로 구성된 프로퍼티 

1)get - 접근자 프로퍼티를 통해 데이터 프로퍼티의 값을 읽을 때 호출되는 접근자 함수.
2)set - 접근자 프로퍼티를 통해 데이터 프로퍼티의 값을 저장할 때 호출되는 접근자 함수.

✔︎ 코드

const squatPr = {
 name: '스쿼트',
 weight: 165,
  
 get leftWeight() {
   return 500 - this.weight;
 },

 set leftWeight(otherWeights) {
   this.weight = 500 - otherWeights;
 },
};

console.log(Object.getOwnPropertyDescriptor(squatPr, 'name'));
/*
{ value: '스쿼트', writable: true, enumerable: true, configurable: true }
*/

Object.defineProperty(squatPr, 'weight', {
 value: 170,
 writable: true,
 enumerable: true,
 configurable: true,
});

1) Object.getOwnproperyDescriptor을 이용해 키값에 대한 내부 슬롯을 볼 수 있다.
2) Object.defineProperty를 사용해 프로퍼티의 어트리뷰트들을 정의 할 수있다.

profile
Life is a risk.

0개의 댓글