Skip to content

Latest commit

 

History

History
97 lines (67 loc) · 2.08 KB

File metadata and controls

97 lines (67 loc) · 2.08 KB

객체란?

다양한 타입의 값(원시 값 또는 다른 객체)를 하나의 단위로 구성한 복합적인 자료구조

  • 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');
	}
**}**;