Object Literal

1 minute read

OBJECT LITERAL

객체를 생성하는 방법 중 하나이다. 이 외에는 생성자로 객체를 생성하는 방법이 있다.

생성

객체 리터럴로 객체 생성하기

const plus = {a1: 1, a2: 2};

console.log(plus); // { a1: 1, a2: 2 }

접근

객체 프로퍼티에 접근하기

const plus = {a1: 1, 'a2': 2};

console.log(plus.a1);      // 1
console.log(plus['a1']);   // 1

삭제

프로퍼티 삭제는 delete 키워드를 사용한다.

const plus = {a1: 1, a2: 2};

plus.a3 = 3;
console.log(plus);

delete plus.a3;
console.log(plus);

// { a1: 1, a2: 2, a3: 3 }
// { a1: 1, a2: 2 }

검색

프로퍼티 key 검색은 in 키워드를 사용한다.

const plus = {a1: 1, a2: 2};

plus.a3 = 3;
console.log('a1' in plus); // true

함수 프로퍼티 생성

const plus = {
    a1: 100,
    a2: 123,
    result: function () {

        return this.a1 + this.a2;
    }
};

console.log(plus.result()); // 223

ES6에서 확장된 객체 리터럴 기능

프로퍼티 초기화

변수 이름과 프로퍼티 키가 동일한 이름일 때 프로퍼티 키를 생략할 수 있다.

[예제1]

const firstName = 'Jimmy';
const lastName = 'Joo';

const obj = { firstName, lastName };

console.log(obj); // {firstName: 'Jimmy', lastName: 'Joo'}

[예제2]

function a(a1, a2) {
        a1,
        a2

    return a1 + a2;
}

console.log(a(1, 2)); // 3

이전 방법 - [예제2]

function a(a1, a2) {

    this.a1 = a1;
    this.a2 = a2;

    return a1 + a2;
}

console.log(a(1, 2)); // 3

객체 내에서 간결한 메서드 생성

메서드 정의할 때 function 키워드를 생략 가능하다.

 const a = {
    a1: 2,
    a2: 3,
    sum() {
        return this.a1 + this.a2;
    }
}

console.log(a.sum()); // 5

이전 방법

const a = {
    a1: 2,
    a2: 3,
    sum: function () {
        return this.a1 + this.a2;
    }
}

console.log(a.sum()); // 5

프로퍼티 키 동적 생성

객체 리터럴 내부에서도 계산된 프로퍼티 이름으로 프로퍼티 키를 동적 생성 가능하다.

const prefix = 'prop';
let i = 0;

const obj = {
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i,
};

console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}

이전에는 외부에서만 동적 생성이 가능했다.