8000 `Object.defineProperty` 객체에 직접 속성을 지정/수정한 후 객체 반환 · Issue #16 · yejineee/WIL · GitHub
[go: up one dir, main page]

Skip to content
8000

Object.defineProperty 객체에 직접 속성을 지정/수정한 후 객체 반환 #16

Open

Description

@yejineee
Object.defineProperty(obj, prop, descriptor)
  • 매개변수

    • obj : 속성 정의할 객체
    • prop: 새로 정의하거나 수정하려는 속성의 이름 또는 symbol
    • descriptor : 새로 정의하거나 수정하려는 속성을 기술하는 객체
  • 이걸 왜 쓸까? 더 상세히 프로퍼티를 설정하기 위함

  • property descriptor
    서술자는 data descriptor이거나 accessor descriptor 둘 중 하나여야 한다.

    • 두 유형이 동시에 갖는 키
      • configurable : 이 속성의 기술 속성(writable제외)을 변경 & 삭제 가능 - 기본값 : false
      • enumerable : 객체의 속성 열거시 이 속성이 노출된다. - 기본값 : false
    • data descriptor가 선택적으로 갖는 키
      • value : 속성에 연관된 값 - 기본값 : undefined
      • writable: 할당연산자로 속성의 값을 바꿀 수 있다. - 기본값 true
    • accessor descriptor가 선택적으로 갖는 키
      • get
      • set
  • 점 구문으로 프로퍼티 할당 vs Object.defineProperty로 할당

var o = {};

o.a = 1;
// 위의 표현은 아래와 같다:
Object.defineProperty(o, 'a', {
  value: 1,
  writable: true,
  configurable: true,
  enumerable: true
});


// 만약 다음과 같이 표현한다면,
Object.defineProperty(o, 'a', { value: 1 });
// 아래의 의미를 지니게 된다:
Object.defineProperty(o, 'a', {
  value: 1,
  writable: false,
  configurable: false,
  enumerable: false
});

참고

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0