[javascript] 프로퍼티 디스크립터와 프로퍼티 속성 종류 적용 예시

자바스크립트에서는 객체의 프로퍼티에 대한 다양한 속성을 지정할 수 있습니다. 이러한 속성을 통해 프로퍼티에 대한 제약 조건을 정의하거나 추가적인 기능을 제공할 수 있습니다. 이 글에서는 프로퍼티 디스크립터와 프로퍼티 속성 종류에 대해 살펴보고, 실제로 이를 적용하는 예시를 제시하겠습니다.

프로퍼티 디스크립터(Property Descriptor)

프로퍼티 디스크립터란 객체의 프로퍼티에 대한 속성을 정의하는 것을 말합니다. 이 속성은 Object.getOwnPropertyDescriptor 메서드를 통해 확인할 수 있습니다. 프로퍼티 디스크립터에는 다음과 같은 속성들이 있습니다:

프로퍼티 속성 종류

프로퍼티 속성 종류에는 다음과 같은 것들이 있습니다:

적용 예시

let person = {
  firstName: 'John',
  lastName: 'Doe',
};

Object.defineProperty(person, 'fullName', {
  get: function() {
    return this.firstName + ' ' + this.lastName;
  },
  set: function(value) {
    let names = value.split(' ');
    this.firstName = names[0];
    this.lastName = names[1];
  },
  enumerable: true,
  configurable: true
});

console.log(person.fullName); // "John Doe"

person.fullName = "Jane Smith";

console.log(person.firstName); // "Jane"
console.log(person.lastName); // "Smith"

위 예시에서는 person 객체에 fullName 프로퍼티를 추가하고 있습니다. 이 프로퍼티는 gettersetter 함수를 통해 값을 읽고 쓸 수 있도록 만들어져 있습니다. 따라서 person.fullName로 프로퍼티의 값을 읽을 수 있으며, person.fullName = "Jane Smith"와 같이 프로퍼티의 값을 변경할 수도 있습니다.

프로퍼티 디스크립터에 enumerable: trueconfigurable: true를 설정하여, 해당 프로퍼티가 열거 가능하고 속성을 변경 가능하도록 설정하였습니다.

이를 통해 자바스크립트에서 프로퍼티의 속성을 조작하여 보다 다양한 활용을 할 수 있습니다.

참고 자료