라이브러리

[JAVASCRIPT] Object.defineProperty(obj, prop, descriptor) - 객체 속성의 세부 정의 (예: 읽기 전용 설정)




Object.defineProperty() 메서드


`Object.defineProperty()` 메서드는 객체의 속성을 정의합니다. 이 메서드는 객체의 속성을 동적으로 추가하거나 기존 속성을 재정의할 수 있습니다.

메서드의 매개변수


`Object.defineProperty()` 메서드는 세 개의 매개변수를 받습니다.

- `obj`: 객체에 속성을 정의할 객체입니다.
- `prop`: 객체에 속성을 정의할 속성 이름입니다.
- `descriptor`: 속성에 대한 설명자입니다.

설명자(Descriptor)


설명자는 속성에 대한 정보를 담고 있는 객체입니다. 설명자는 다음 속성을 가질 수 있습니다.

- `value`: 속성의 값입니다.
- `writable`: 속성이 읽기/쓰기 가능 여부를 나타냅니다. (기본값: `true`)
- `enumerable`: 속성이 열거 가능 여부를 나타냅니다. (기본값: `false`)
- `configurable`: 속성이 재정의 가능 여부를 나타냅니다. (기본값: `false`)

예제


#hostingforum.kr
javascript

// 객체 생성

const obj = {};



// 속성 정의

Object.defineProperty(obj, 'name', {

  value: 'John Doe',

  writable: true,

  enumerable: true,

  configurable: true

});



// 속성 읽기

console.log(obj.name); // John Doe



// 속성 쓰기

obj.name = 'Jane Doe';

console.log(obj.name); // Jane Doe



// 속성 열거

console.log(Object.keys(obj)); // ['name']



// 속성 재정의

Object.defineProperty(obj, 'name', {

  value: 'Jim Doe',

  writable: false,

  enumerable: false,

  configurable: false

});



// 속성 읽기 (읽기 가능 여부가 false로 설정되어 있으므로 읽을 수 없음)

try {

  console.log(obj.name);

} catch (error) {

  console.error(error); // Cannot read property 'name' of object '#'

}



// 속성 열거 (열거 가능 여부가 false로 설정되어 있으므로 열거되지 않음)

console.log(Object.keys(obj)); // []



결론


`Object.defineProperty()` 메서드는 객체의 속성을 동적으로 추가하거나 기존 속성을 재정의할 수 있습니다. 설명자는 속성에 대한 정보를 담고 있는 객체로, 속성의 값, 읽기/쓰기 가능 여부, 열거 가능 여부, 재정의 가능 여부를 나타낼 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 177건 / 11 페이지

검색

게시물 검색