예제 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 |
예제 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 |