다양한 타입의 값(원시 값 또는 다른 객체)를 하나의 단위로 구성한 복합적인 자료구조
- data를 가지고 있는 프로퍼티 (상태)
- data를 참조하고 제어하는 메서드 (동작)
으로 구성되어있다.
키와 값으로 구성
- 키 : 빈 문자열 포함하는 모든 문자열 또는 symbol
- 값 : 모든 값
프로퍼티 중 값이 함수인 프로퍼티를 메서드라고 부른다.
대괄호 [ ] 를 통해 프로퍼티 키를 변수화하여 동적으로 생성할 수 있음
var obj = {};
var newKey = 'hello';
obj[newKey] = 'world';
console.log(obj); // {hello: "world"}var person = {
name: 'Lee';
}- 마침표 표기법 (dot notation)
person.name
- 대괄호 표기법 (bracket notation)
person['name']- 프로퍼티 이름을 반드시 따옴표로 감싸야한다.
- 따옴표로 감싸지 않고 접근 시
ReferenceError참조 에러가 발생 - 객체에 존재하지 않은 프로퍼티에 접근할 시에
undefined를 반환하는 것과 차이
- 따옴표로 감싸지 않고 접근 시
프로퍼티에 접근하여 값을 할당하면 있는 경우 생성하고 없는 경우 값을 갱신한다.
var person = {
name: 'Lee';
}
person.age = 10; // person 객체에 새로운 프로퍼티 생성
person.name = 'kim'; // name 프로퍼티의 값 재할당delete 연산자 사용
var person = {
name: 'Lee';
}
delete person.age;
delete person.bar; // 없는 프로퍼티를 삭제해도 오류없이 무시된다. 객체는 아래와 같은 방법으로 생성할 수 있다.
- 객체 리터럴
{ … } - Object 생성자 함수
- 생성자 함수
- Object.create 메서드
- 클래스 (ES6)
중괄호 { ... } 리터럴을 통해 객체를 생성한다.
var person = **{**
name: 'Lee',
sayHello: function() {
console.log('Hello');
}
**}**;