[javascript] 프로퍼티 디스크립터와 프로퍼티 속성 종류 적용 예시
자바스크립트에서는 객체의 프로퍼티에 대한 다양한 속성을 지정할 수 있습니다. 이러한 속성을 통해 프로퍼티에 대한 제약 조건을 정의하거나 추가적인 기능을 제공할 수 있습니다. 이 글에서는 프로퍼티 디스크립터와 프로퍼티 속성 종류에 대해 살펴보고, 실제로 이를 적용하는 예시를 제시하겠습니다.
프로퍼티 디스크립터(Property Descriptor)
프로퍼티 디스크립터란 객체의 프로퍼티에 대한 속성을 정의하는 것을 말합니다. 이 속성은 Object.getOwnPropertyDescriptor 메서드를 통해 확인할 수 있습니다. 프로퍼티 디스크립터에는 다음과 같은 속성들이 있습니다:
value: 프로퍼티의 값writable: 프로퍼티의 값 수정 가능 여부enumerable: 프로퍼티의 열거(반복) 가능 여부configurable: 프로퍼티의 속성 변경 가능 여부
프로퍼티 속성 종류
프로퍼티 속성 종류에는 다음과 같은 것들이 있습니다:
data property: 일반적인 프로퍼티로, 값을 저장하고 있는 속성입니다.accessor property:getter와setter함수를 통해 값을 읽고 쓸 수 있는 속성입니다.
적용 예시
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 프로퍼티를 추가하고 있습니다. 이 프로퍼티는 getter와 setter 함수를 통해 값을 읽고 쓸 수 있도록 만들어져 있습니다. 따라서 person.fullName로 프로퍼티의 값을 읽을 수 있으며, person.fullName = "Jane Smith"와 같이 프로퍼티의 값을 변경할 수도 있습니다.
프로퍼티 디스크립터에 enumerable: true와 configurable: true를 설정하여, 해당 프로퍼티가 열거 가능하고 속성을 변경 가능하도록 설정하였습니다.
이를 통해 자바스크립트에서 프로퍼티의 속성을 조작하여 보다 다양한 활용을 할 수 있습니다.