MDN:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties
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); // { name: { value: '와우', writable: true, enumerable: true, configurable: true }, emoji: { value: '🐶', writable: true, enumerable: true, configurable: true } }
const desc = Object.getOwnPropertyDescriptor(dog, 'name');
console.log(desc); // { value: '와우', writable: true, enumerable: true, configurable: true }
Object.defineProperty(dog, 'name', {
value: '멍멍',
writable: false, // 업데이트 가능여부
enumerable: false, // 열거 가능여부
configurable: false, // 삭제 수정 가능여부
});
console.log(dog.name); // 멍멍
console.log(Object.keys(dog)); // [ 'emoji' ]
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);