40. 오브젝트(Object)
프로퍼티 (property)
property
- { name : value } 형태
name 에 프로퍼티 이름/키를 작성
- 따옴표 작성 생략
var book = {
title: "책",
point: 123
}
- 프로퍼티 name(key)에서 key는 유일하지만 name은 중복될 수 있다는 뉘앙스가 풍깁니다.
- ES3 에서는 같은 이름이 등록되기도 합니다.
즉, 위 코드로치면 title이 두 개가 있는 것입니다.
그래서 그때엔 title이 book 오브젝트에 존재하는지 체크하는 코드로 먼저 체크한 후 등록여부를 결정했습니다.
ES5에서는 2중으로 등록되진 않구요, 프로퍼티 이름이 이미 있다면 값이 대체되는 형태가 되었습니다. - ES5에서는 key와 name을 구분하지 않아도 되지만 (프로퍼티 네임, 프로퍼티 키 아무렇게나 불러도 되지만)
ES6에서는 구분해야 합니다. (값의 지칭 범위가 좀 다릅니다.)
var book = {
title: "책"
}
- {title: “책”}에서 “title”처럼 따옴표를 사용해야 합니다.
즉, title은 String 타입입니다. - 그런데 따옴표를 작성하지 않는 것은 따옴표를 작성하지 않아도 문자열로 간주하기 때문입니다.
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책"}
- book.title 처럼 점(.)에 이어서 프로퍼티 이름을 작성합니다.
- title을 “title” 처럼 따옴표를 사용하지 않습니다.
- = 오른쪽에 프로퍼티 값을 작성합니다.
대괄호 사용: obj[“abc”]
var book = {}; book["title"] = "JS책"; console.log(book); // {title: "JS책"}
- book[“title”] 처럼 대괄호 [] 안에 문자열로 프로퍼티 이름을 작성합니다.
- = 오른쪽에 프로퍼티 값을 작성합니다.
abc 변수 이름 작성: obj[abc]
var book = {title: "JS책"}; var varName = "title"; book[varName] = "HTML책"; console.log(book); // {title: "HTML책"}
- 프로퍼티 이름을 변수에 작성하고 이를 사용
- title 프로퍼티 이름이 있으므로 프로퍼티 값이 변경됩니다.