싱글 리터럴
const obj = {
key: value
}
:
기준으로 key와 value로 나뉩니다.생성자 함수 객체
function newObj(name) {
this.name = name;
} // this는 함수가 생성할 인스턴스를 가르킵니다.(newObj)
Object.create
const name = Object.create(프로토타입, 객체 서술자)
예제
const person = Object.create(Object.prototype, {
name: {
value: 'kim',
writable: true, // 덮어쓰기가 가능한지
enumberable: true, // 열거가 가능한지
configurable: true, // 객체 서술자를 수정할 수 있는지
}
}
});
생성한 객체의 프로토 타입을 정의하여 만들 수 있습니다.
const obj = {
prop1: 'value',
prop2: 'value',
prop3: 'value',
prop4: 'value',
}
위 예제를 이용하여 열거하는 방법에 대해 알아보겠습니다.
const obj = {
prop1: 'value',
prop2: 'value',
prop3: 'value',
prop4: 'value',
}
for (const key in obj) { // key는 obj안에서 key를 열거, obj는 열거하고 싶은 대상의 객체명
console.log(key);
}
출력 결과
객체의 value를 가져오는 방법
name.key
name['key']
각괄호 표현식
for in문에 각괄호 표현식 사용하기
{
const value = 1;
{
const value = 2;
{
const value = 3;
}
console.log(value);
}
}
위 예제에서 최종 출력 값은 3이지만 3이 없다면 2가 출력되고, 2가 없다면 1이 출력됩니다.
이런 현상을 체이닝이라고 부릅니다.
hasOwnProperty()
를 사용하게 되면, 특정 프로퍼티를 가지고 있는지를 불리언 값으로 반환합니다.예시
추가
수정
삭제
getter(획득자), setter(설정자)로 표현합니다.
객체에 일관적으로 안전하게 접근할 때 사용합니다.
예제를 통해 이해해 보겠습니다.
get : firstName을 실행할 때 사용되는 코드
set : firstName의 값을 수정할 때 사용되는 코드
console.log를 보면 me와 me2의 키와 값이 같지만 false가 나왔습니다.
그 이유는 메모리 주소가 다르기 때문입니다.
제일 상단에 기본 구조로 사용할 템플릿을 작성한 뒤, 생성자 함수로 객체에 받을 값을 작성해 줍니다.
(생성자 함수에 있는 this는 생성될 인스턴스. 즉, me2와 me3을 가르킵니다.)
그 뒤const me2, me3
으로 생성하면 됩니다.
아래 콘솔을 보시면 잘 출력되고 있는 모습을 보실 수 있습니다.
ES2015부터는 class가 생겨 생성자 함수를 잘 사용하지 않습니다.