/**
* 지정된 프로토타입 및 프로퍼티를 갖는 새로운 객체를 생성하여 반환한다.
* @param {Object} prototype - 생성할 객체의 프로토타입으로 지정할 객체
* @param {Object} [propertiesObject] - 생성할 객체의 프로퍼티를 갖는 객체
* @param {Object} 지정된 프로토타입 및 프로퍼티를 갖는 새로운 객체
*/
Object.creat(prototype[, propertiesObject])
new 연산자 없이도 객체 생성 가능
프로토타입을 지정하면서도 객체 생성
객체 리터럴에 의해 생성된 객체도 상속받을 수 있음
const myProto = { x : 10 };
// 객체 리터럴에 의해 객체를 생성하면서 프로토타입을 지정하여 직접 상속받을 수 있다.
const obj = {
y: 20,
// 객체를 직접 상속받는다.
// obj -> myProto -> Object.prototype -> null
__proto__ : myProto
};
/*
위 코드는 아래와 동일하다.
const obj = Object.create(myProto, P
y: { value:20, writable: true, enumerable: true, configurable: true }
});
*/
console.log(obj.x, obj.y); // 10 20
console.log(Object.getPrototypeOf(obj) === myProto); // true
/**
* key : 프로퍼티 키를 나타내는 문자열
* object : 객체로 평가되는 표현식
*/
key in object
const person2 = {
name: 'Lee',
address: 'Seoul',
__proto__ : { age: 20}
};
for (const key in person2) {
console.log(key + ':' + person2[key]);
}
//name:Lee
//address:Seoul
//age:20
for (const key in person2) {
// 객체 자신의 프로퍼티인지 확인
if (!person2.hasOwnProperty(key)) continue;
console.log(key + ':' + person2[key]);
}
//name:Lee
//address:Seoul
onsole.log(Object.keys(person2));
// ["name", "address"]
위 글은 위키북스의 모던 자바스크립트 Deep Dive 를 읽고 정리한 내용입니다.