LHJ

I'm a FE developer.

6-1. 오브젝트(Object) / 오브젝트(Object) 프로퍼티 개요, 프로퍼티 추가, 변경

21 Nov 2020 » js_beginner

40. 오브젝트(Object)

프로퍼티 (property)

  • property

    • { name : value } 형태

  • name 에 프로퍼티 이름/키를 작성

    • 따옴표 작성 생략
var book = {
    title: "",
    point: 123
}
  1. 프로퍼티 name(key)에서 key는 유일하지만 name은 중복될 수 있다는 뉘앙스가 풍깁니다.
  2. ES3 에서는 같은 이름이 등록되기도 합니다.
    즉, 위 코드로치면 title이 두 개가 있는 것입니다.
    그래서 그때엔 title이 book 오브젝트에 존재하는지 체크하는 코드로 먼저 체크한 후 등록여부를 결정했습니다.
    ES5에서는 2중으로 등록되진 않구요, 프로퍼티 이름이 이미 있다면 값이 대체되는 형태가 되었습니다.
  3. ES5에서는 key와 name을 구분하지 않아도 되지만 (프로퍼티 네임, 프로퍼티 키 아무렇게나 불러도 되지만)
    ES6에서는 구분해야 합니다. (값의 지칭 범위가 좀 다릅니다.)
var book = {
    title: ""
}
  1. {title: “책”}에서 “title”처럼 따옴표를 사용해야 합니다.
    즉, title은 String 타입입니다.
  2. 그런데 따옴표를 작성하지 않는 것은 따옴표를 작성하지 않아도 문자열로 간주하기 때문입니다.

  • value 에 JS 에서 지원하는 타입 작성

    • { a: 123, b: “ABC”, c: true, d: {} }
    • { book: function(){코드} }
var book = {
    title: "",
    point: {
        ten: 10,
        bonus: 200,
        promotion: function () {}
    }
}

오브젝트는 위와 같이 value 에 오브젝트를 작성하여 확장할 수 있는 것이 특징입니다.


  • 오브젝트(Object)를 객체라고 부르지만

    • 뉘앙스가 다르며, 강좌에서는 오브젝트로 표기
    • 오브젝트와 객체 구분이 필요할 때, 별도 표기

여기서 말하는 오브젝트는 프로퍼티라는 실체가 있습니다. {name: value}
그런데 책과 문서에 기록되어있는 것은 주변 상황에 따라서 실체가 없이 개념적인 이야기가 될 수도 있습니다.
제가 오브젝트라고 표기하는 이유는 실체를 가리키기 위함입니다.

프로퍼티 추가, 변경

  • 오브젝트에 프로퍼티 추가, 변경

    • var obj = {};
    • obj.abc = 123;
    • obj 오브젝트에 프로퍼티 이름으로
      abc가 없으면 abc: 123이 추가되고 abc가 있으면 프로퍼티 값이 123으로 변경됨

  • 작성 방법

    • 점(.)과 프로퍼티 이름 사용

        var book = {};
        book.title = "JS책";
        console.log(book);
        // {title: "JS책"}
      
      1. book.title 처럼 점(.)에 이어서 프로퍼티 이름을 작성합니다.
      2. title을 “title” 처럼 따옴표를 사용하지 않습니다.
      3. = 오른쪽에 프로퍼티 값을 작성합니다.
    • 대괄호 사용: obj[“abc”]

        var book = {};
        book["title"] = "JS책";
        console.log(book);
        // {title: "JS책"}
      
      1. book[“title”] 처럼 대괄호 [] 안에 문자열로 프로퍼티 이름을 작성합니다.
      2. = 오른쪽에 프로퍼티 값을 작성합니다.
    • abc 변수 이름 작성: obj[abc]

        var book = {title: "JS책"};
        var varName = "title";
        book[varName] = "HTML책";
        console.log(book);
        // {title: "HTML책"}
      
      1. 프로퍼티 이름을 변수에 작성하고 이를 사용
      2. title 프로퍼티 이름이 있으므로 프로퍼티 값이 변경됩니다.