
Object.defineProperties(obj, descriptors) 메서드는 객체의 속성을 정의할 때 사용하는 메서드입니다. descriptors 객체는 property descriptors의 배열로, 객체의 속성을 정의할 때 사용하는 속성을 정의하는 객체입니다.
property descriptors에는 다음과 같은 종류가 있습니다.
- value: 속성의 값을 정의합니다. 예를 들어, `obj.name = 'John';`과 같이 속성의 값을 직접 정의할 수 있습니다.
- writable: 속성의 값을 변경할 수 있는지 여부를 정의합니다. 예를 들어, `obj.name.writable = false;`와 같이 속성의 값을 변경할 수 없도록 정의할 수 있습니다.
- enumerable: 속성의 이름을 반복문으로 열거할 수 있는지 여부를 정의합니다. 예를 들어, `obj.name.enumerable = false;`와 같이 속성의 이름을 반복문으로 열거할 수 없도록 정의할 수 있습니다.
- configurable: 속성의 값을 삭제하거나 속성을 재정의할 수 있는지 여부를 정의합니다. 예를 들어, `obj.name.configurable = false;`와 같이 속성의 값을 삭제하거나 속성을 재정의할 수 없도록 정의할 수 있습니다.
- get: 속성의 값을 읽을 때 호출되는 함수를 정의합니다. 예를 들어, `obj.name.get = function() { return this._name; };`와 같이 속성의 값을 읽을 때 호출되는 함수를 정의할 수 있습니다.
- set: 속성의 값을 설정할 때 호출되는 함수를 정의합니다. 예를 들어, `obj.name.set = function(value) { this._name = value; };`와 같이 속성의 값을 설정할 때 호출되는 함수를 정의할 수 있습니다.
예를 들어, 다음 코드는 `obj.name` 속성을 정의하는 예입니다.
#hostingforum.kr
javascript
var obj = {};
Object.defineProperty(obj, 'name', {
value: 'John',
writable: false,
enumerable: true,
configurable: false,
get: function() { return this._name; },
set: function(value) { this._name = value; }
});
console.log(obj.name); // John
obj.name = 'Jane';
console.log(obj.name); // John
이 예에서, `obj.name` 속성은 읽기 전용 속성이며, 값을 변경할 수 없도록 정의되어 있습니다. 속성의 값을 읽을 때 호출되는 함수는 `get` 함수이며, 속성의 값을 설정할 때 호출되는 함수는 `set` 함수입니다.
2025-07-13 17:15