프로퍼티 어트리뷰트


: 객체의 프로퍼티가 생성될 때 엔진에 의해 자동 정의되는 상태

프로퍼티에는 두 종류가 있음

const person = {

  **// ⭐️ 1. 데이터 프로퍼티들**
  fullName: '홍길동',
  ageInNumber: 25,

  **// ⭐️ 2. 접근자 프로퍼티들**
  get name () {
    return this.fullName
    .split('')
    .map((letter, idx) => idx === 0 ? letter : '*')
    .join('');
  },
  get age () { return this.ageInNumber + '세'; },
  set age (age) {
    this.ageInNumber = Number(age);
  }
}

console.log(
  person.name, person.age
);

1. 데이터 프로퍼티의 어트리뷰트

image.png

2. 접근자 프로퍼티의 어트리뷰트

image.png

Object의 프로퍼티 어트리뷰트 관련 정적 메서드들


1. getOwnPropertyDescriptorgetOwnPropertyDescriptors

객체의 프로퍼티 어트리뷰트들의 설명자를 반환

const person = {

  // ⭐️ 1. 데이터 프로퍼티들
  fullName: '홍길동',
  ageInNumber: 25,

  // ⭐️ 2. 접근자 프로퍼티들
  get name () {
    return this.fullName
    .split('')
    .map((letter, idx) => idx === 0 ? letter : '*')
    .join('');
  },
  get age () { return this.ageInNumber + '세'; },
  set age (age) {
    this.ageInNumber = Number(age);
  }
}
// 특정 프로퍼티를 지정하여 반환
console.log('1.',
  Object.getOwnPropertyDescriptor(person, 'fullName')
);
console.log('2.',
  Object.getOwnPropertyDescriptor(person, 'ageInNumber')
);
console.log('3.', // set: undefined
  Object.getOwnPropertyDescriptor(person, 'name')
);
console.log('4.', // get, set 모두 있음
  Object.getOwnPropertyDescriptor(person, 'age')
);

image.png