[javascript] 프로퍼티 디스크립터와 객체 상속 - 추가 설명

이 글은 JavaScript의 프로퍼티 디스크립터와 객체 상속에 대해 자세히 설명합니다.

JavaScript에서 객체는 프로퍼티의 집합으로 표현됩니다. 각 프로퍼티는 이름(key)과 값(value)으로 구성됩니다. 프로퍼티의 특징을 제어하기 위해 프로퍼티 디스크립터를 사용할 수 있습니다.

프로퍼티 디스크립터는 프로퍼티의 속성을 정의하는 객체입니다. 다음과 같은 속성을 가질 수 있습니다:

이러한 속성을 사용하여 프로퍼티의 동작을 제어할 수 있습니다. 예를 들어, configurable 속성을 false로 설정하면 해당 프로퍼티를 삭제하거나 속성을 변경할 수 없게 됩니다.

객체 상속은 객체를 다른 객체로부터 상속받는 개념입니다. 이를 통해 코드의 재사용성과 구조화를 할 수 있습니다. JavaScript에서 객체 상속은 프로토타입 체인을 통해 이루어집니다.

객체 상속에서 프로퍼티 디스크립터는 중요한 역할을 합니다. 상속받은 프로퍼티는 프로토타입 체인을 따라 찾아갈 때 해당 프로퍼티의 디스크립터를 확인하고, 해당 디스크립터의 속성에 따라 프로퍼티의 동작이 결정됩니다.

const parentObj = {
  name: "Parent Object"
}

const childObj = Object.create(parentObj, {
  age: {
    value: 10,
    writable: true,
    configurable: false
  }
})

console.log(childObj.name); // "Parent Object"
console.log(childObj.age); // 10

delete childObj.age; // Error: 삭제할 수 없는 프로퍼티입니다.
childObj.age = 20; // 값 변경이 가능합니다.

위의 코드는 parentObj라는 객체를 childObj라는 객체에서 상속받는 예시입니다. childObj에는 age라는 프로퍼티가 추가되는데, 이 프로퍼티는 configurable 속성이 false로 설정되어 있기 때문에 삭제나 변경이 불가능합니다.

프로퍼티 디스크립터와 객체 상속은 JavaScript에서 중요한 개념입니다. 이를 이해하고 활용하여 객체의 동작을 세밀하게 제어할 수 있습니다.


참조: