const dog = { name: '와우', emoji: '🐶' };
console.log(Object.keys(dog));
console.log(Object.values(dog));
console.log(Object.entries(dog));
console.log('name' in dog);
console.log(dog.hasOwnProperty('name'));
const descriptors = Object.getOwnPropertyDescriptors(dog);
console.log(descriptors);
const desc = Object.getOwnPropertyDescriptor(dog, 'name');
console.log(desc);
Object.defineProperty(dog, 'name', {
value: '멍멍',
writable: false,
enumerable: false,
configurable: false,
});
console.log(dog.name);
console.log(Object.keys(dog));
delete dog.name;
console.log(dog.name);
const student = {};
Object.defineProperties(student, {
firstName: {
value: '영희',
writable: true,
enumerable: true,
configurable: true,
},
lastName: {
value: '김',
writable: true,
enumerable: true,
configurable: true,
},
fullName: {
get() {
return `${lastName} ${firstName}`;
},
set(name) {
[this.lastName, this.firstName] = name.split(' ');
},
configurable: true,
},
});
console.log(student);
- 모든 객체는 내부에 숨겨진 [[Prototype]]을 가지고 있다.
객체간 상속을 위해
- 외부에서 직접 접근 불가하다.
- 객체간 상속의 연결고리는 프로토타입 체인으로 연결 되어 있다.