본문 바로가기

Web/Javascript

객체 기초

객체

중괄호 {...}를 이용해 객체를 선언하는 것을 객체 리터럴(object literal) 이라고 부른다.

객체를 선언할 땐 주로 이 방법을 사용한다.

let user = {     // 객체
  name: "John",  // 키: "name",  값: "John"
  age: 30        // 키: "age", 값: 30
};

 

객체는 몇 가지 특수한 기능을 가진 연관 배열(associative array)이다.

객체는 프로퍼티(키-값 쌍)를 저장한다.

  • 프로퍼티 키는 문자열이나 심볼이어야 한다. 보통은 문자열이다.
  • 값은 어떤 자료형도 가능하다.

아래와 같은 방법을 사용하면 프로퍼티에 접근할 수 있다.

  • 점 표기법: obj.property
  • 대괄호 표기법 obj["property"]. 대괄호 표기법을 사용하면 obj[varWithKey]같이 변수에서 키를 가져올 수 있다.

객체엔 다음과 같은 추가 연산자를 사용할 수 있다.

  • 프로퍼티를 삭제하고 싶을 때: delete obj.prop
  • 해당 key를 가진 프로퍼티가 객체 내에 있는지 확인하고자 할 때: "key" in obj
  • 프로퍼티를 나열할 때: for (let key in obj)

자바스크립트에는 일반 객체 이외에도 다양한 종류의 객체가 있다.

  • Array – 정렬된 데이터 컬렉션을 저장할 때 쓰임
  • Date – 날짜와 시간 정보를 저장할 때 쓰임
  • Error – 에러 정보를 저장할 때 쓰임
  • 기타 등등

객체 정렬 방식

프로퍼티엔 순서가 있을까?

객체는 '특별한 방식으로 정렬’된다.

정수 프로퍼티(integer property)는 자동으로 정렬되고, 그 외의 프로퍼티는 객체에 추가한 순서 그대로 정렬된다.

let codes = {
  "49": "독일",
  "41": "스위스",
  "44": "영국",
  // ..,
  "1": "미국"
};

for (let code in codes) {
  alert(code); // 1, 41, 44, 49
}

한편, 키가 정수가 아닌 경우엔 작성된 순서대로 프로퍼티가 나열된다.

let user = {
  name: "John",
  surname: "Smith"
};
user.age = 25; // 프로퍼티를 하나 추가한다.

// 정수 프로퍼티가 아닌 프로퍼티는 추가된 순서대로 나열된다.
for (let prop in user) {
  alert( prop ); // name, surname, age
}

'Web > Javascript' 카테고리의 다른 글

메서드와 'this'  (0) 2020.05.31
참조에 의한 객체 복사  (0) 2020.05.31
자바스크립트 기초  (0) 2020.05.22
객체지향(OOP) 프로그래밍  (0) 2018.01.17
CLASS  (0) 2018.01.15