Javascript

[모자딥]프로퍼티 어트리뷰트 16.03~16.06

2023. 11. 21. 22:31
목차
  1. 예제 16.03
  2. 예제 16.04
  3. 예제 16.05
  4. 예제 16.06

예제 16.03

  • 사람 변수에 name: 'Lee' 할당
  • 이후 동적으로 사람 객체에 age와 gender를 추가함 => '사람' 변수에 name : 'Lee' , age : 20, gender = '남자' 추가된 상태
  • Object.getOwnPropertyDescriptors메서드로 사람 변수에 추가된 모든 프로퍼티의 프로퍼티 어트리뷰트를 조회
const 사람 = {
    name: 'Lee'
};

// 프로퍼티 동적 생성
사람.age = 20;
사람.gender = '남자'

//console.log(사람) name: 'Lee', age = 20, gender = '남자'

// 모든 프로퍼티의 프로퍼티 어트리뷰트 정보를 제공하는 프로퍼티 디스크립터 객체들을 반환한다.
console.log(Object.getOwnPropertyDescriptors(사람))
// {  
//     name: { value: 'Lee', writable: true, enumerable: true,  configurable: true },
//     age: { value: 20, writable: true, enumerable: true, configurable: true },
//     gender: { value: '남자', writable: true, enumerable: true, configurable: true }
//   }

 

예제 16.04

  • Obejct.getOwnPropertyDescriptor 메서드는 특정 프로퍼티에 대한 어트리뷰트를 조회
  • 예제에서는 사람 객체의 name 프로퍼티에 대한 프로퍼티 어트리뷰트를 조회
  • Object.getOwnPropertyDescriptor 첫번쨰 인자로 조회할 요소, 두번째 인자로 조회할 프로퍼티를 지정
const 사람 = {
    name: 'Lee'
};

// 프로퍼티 어트리뷰트 정보를 제공하는 프로퍼티 디스크립터 객체를 취득한다.
console.log(Object.getOwnPropertyDescriptor(사람, 'name'));
// {value: "Lee", writable: true, enumerable: true, configurable: true}

예제 16.05

  • 사람 변수 지정
  • 동적으로 프로퍼티 지정 age,gender,job 프로퍼티 추가
  • Object.getOwnPropertyDescriptors 메서드로 사람변수에 지정된 프로퍼티들에 대한 프로퍼티 어트리뷰트 조회
const 사람 = {
    name: 'Lee'
};

// 프로퍼티 동적 생성
사람.age = 20;
사람.gender = '남자';
사람.job = '공무원'
//console.log(사람){ name: 'Lee', age: 20, gender: '남자', job: '공무원' }

console.log(Object.getOwnPropertyDescriptors(사람));
//{
//  name: { value: 'Lee', writable: true, enumerable: true, configurable: true },
//  age: { value: 20, writable: true, enumerable: true, configurable: true },
//  gender: { value: '남자', writable: true, enumerable: true, configurable: true },
//  job: { value: '공무원', writable: true, enumerable: true, configurable: true}
//}

예제 16.06

const 사람 = {
    // 데이터 프로퍼티
    firstName: '용식',
    lastName: '김',

    // fullName은 접근자 함수로 구성된 접근자 프로퍼티다.
    // getter 함수
    get fullName() {
        return `${this.firstName} ${this.lastName}`;
    },
    // setter 함수
    set fullName(name) {
        // 배열 디스트럭처링 할당: "31.1 배열 디스트럭처링 할당" 참고
        [this.firstName, this.lastName] = name.split(' ');
    }
};

//용식 김
console.log(사람.firstName + ' ' + 사람.lastName);

// 접근자 프로퍼티를 통한 프로퍼티 값의 저장
사람.fullName = '니가 최고야';
console.log(사람); //{ firstName: '니가', lastName: '최고야', fullName: [Getter/Setter] }

// 니가 최고야
console.log(사람.fullName);

// firstName은 데이터 프로퍼티다.
// 데이터 프로퍼티는 [[Value]], [[Writable]], [[Enumerable]], [[Configurable]] 프로퍼티 어트리뷰트를 갖는다.
let descriptor1 = Object.getOwnPropertyDescriptor(사람, 'firstName');
let descriptor2 = Object.getOwnPropertyDescriptor(사람, 'lastName');
console.log(descriptor1);
console.log(descriptor2);
// descriptor1 { value: '니가', writable: true, enumerable: true, configurable: true }
// descriptor2 { value: '최고야', writable: true, enumerable: true, configurable: true }

// fullName은 접근자 프로퍼티다.
// 접근자 프로퍼티는 [[Get]], [[Set]], [[Enumerable]], [[Configurable]] 프로퍼티 어트리뷰트를 갖는다.
descriptor1 = Object.getOwnPropertyDescriptor(사람, 'fullName');
console.log(descriptor1);
// {get: ƒ, set: ƒ, enumerable: true, configurable: true}

'Javascript' 카테고리의 다른 글

[모자딥]프로퍼티 어트리뷰트 객체 변경 방지  (0) 2023.11.25
[모자딥]프로퍼티 어트리뷰트 16.07 ~ 16.08  (0) 2023.11.23
[모자딥]프로퍼티 어트리뷰트 16.01 ~ 16.02  (0) 2023.11.19
Date 객체 생성  (0) 2023.10.30
배열 생성  (0) 2023.10.22
  1. 예제 16.03
  2. 예제 16.04
  3. 예제 16.05
  4. 예제 16.06
'Javascript' 카테고리의 다른 글
  • [모자딥]프로퍼티 어트리뷰트 객체 변경 방지
  • [모자딥]프로퍼티 어트리뷰트 16.07 ~ 16.08
  • [모자딥]프로퍼티 어트리뷰트 16.01 ~ 16.02
  • Date 객체 생성
index.ys
index.ys
머리속에 떠도는 코드조각들을 맞추는 공간입니다.
index.ys
코린이 개발일지
index.ys
전체
오늘
어제

공지사항

블로그 메뉴

  • 홈
  • 방명록
  • Github
  • Notion
  • Figma
  • 타닥타닥 (235)
    • 개발일지 (124)
    • html , css (0)
    • Javascript (30)
    • Node.js (8)
    • React (2)
    • 네트워크 (1)
    • DB, SQL (5)
    • AWS (11)
    • CS (21)
    • 면접 (13)
    • 사진 (4)
    • 북로그 (3)
    • 머릿속 (5)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
index.ys
[모자딥]프로퍼티 어트리뷰트 16.03~16.06
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.