JavaScript 4.1

2 minute read

객체

  • 다양한 데이터를 담을 수 있다.
  • 객체는 몇 가지 특수한 기능을 가진 연관 배열이다.
  • 빈 객체를 만드는 방법은 두가지가 있다.
let user = new Object(); // '객체 생성자' 문법
let user = {};  // '객체 리터럴' 문법

순수 객체

리터럴과 프로퍼티

let user = {     // 객체
  name: "John",  // 키: "name",  값: "John"
  age: 30        // 키: "age", 값: 30
};
  • 객체는 프로퍼티(키-값 쌍)를 저장한다.
    • 프로퍼티 키는 문자열이나 심볼이어야 한다. 보통은 문자열이다.
    • 값은 어떤 자료형도 가능하다.
  • 중괄호 안에는 키: 값 쌍으로 구성된 프로퍼티가 들어간다.
  • 콜론(:)을 기준으로 왼쪽에는 키가, 오른쪽에는 값이 위치한다.
  • 프로퍼티 키는 프로퍼티 이름 혹은 식별자라고도 부른다.
  • 여러 단어를 조합해 프로퍼티 이름을 만든 경우엔 프로퍼티 이름을 따옴표로 묶어야 한다.
  • 프로퍼티 끝은 쉼표로 끝날 수 있다.
  • 프로퍼티에 접근하는 방법
  • 점 표기점 : obj.property
    • 여러 단어를 조합해 프로퍼티 키를 만든 경우엔 점 표기법을 이용해 프로퍼티 값을 읽을 수 없다.
    • 점은 키가 유효한 변수 식별자인 경우에만 사용할 수 있다.
  • 대괄호 표기법 : obj[“property”]
    • 대괄호 표기법을 사용하면 obj[varWithKey] 같이 변수에서 키를 가져올 수 있다.
    • 키에 어떤 문자열이 있던지 상관없이 동작한다.
    • 대괄호 표기법 안에서 문자열ㅇ르 사용할 땐 문자열을 따옴표로 묶어줘야 한다.
  • 객체엔 다음과 같은 추가 연산자가 사용된다.
    • 프로퍼티를 삭제하고 싶을 때 : delete obj.prop
    • 해당 key를 가진 프로퍼티가 객체 내에 있는지 확인하고자 할 때 : “key” in obj
    • 프로퍼티를 나열할 때 : for (let key in obj)
  • 단축 프로퍼티
    • 프로퍼티 값 단축 구문을 사용하면 코드를 짧게 줄일 수 있다.
function makeUser(name, age) {
  return {
    name: name,
    age: age,
    // ...등등
  };
}

let user = makeUser("John", 30);
alert(user.name); // John

// 단축 프로퍼티
function makeUser(name, age) {
  return {
    name, // name: name 과 같음
    age,  // age: age 와 같음
    // ...
  };
}

// 혼합 사용 가능
let user = {
  name,  // name: name 과 같음
  age: 30
};
  • 프로퍼티 이름의 제약 사항
    • 객체 프로퍼티엔 제약이 없다.
  • 존재하지 않는 프로퍼티에 접근하려 해도 에러가 발생하지 않고 undefined를 반환한다.
    • 또한 In 연산자로 프로퍼티 존재 여부를 확인할 수 있다.
// undefined
let user = {};

alert( user.noSuchProperty === undefined ); // true는 '프로퍼티가 존재하지 않음'을 의미합니다.

// in
"key" in object

// 예시
let user = { name: "John", age: 30 };

alert( "age" in user ); // user.age가 존재하므로 true가 출력됩니다.
alert( "blabla" in user ); // user.blabla는 존재하지 않기 때문에 false가 출력됩니다.
  • undefined를 사용하는 방법이 실패하는 경우가 있기 때문에 in을 사용한다.
  • for…in 반복문을 사용하면 객체의 모든 키를 순회할 수 있다.
for (key in object) {
  // 각 프로퍼티 키(key)를 이용하여 본문(body)을 실행합니다.
}
  • 객체 정렬
    • 프로퍼티엔 순서가 있을까?
      • 객체는 특별한 방식으로 정렬된다.
        • 정수 프로퍼티는 자동으로 정렬된다.
        • 그 외의 프로퍼티는 객체에 추가한 순서 그대로 정렬된다.

그 외 객체

  • Array : 정렬된 데이터 컬렉션을 저장할 때 쓰인다.
  • Data : 날짜와 시간 정보를 저장할 때 쓰인다.
  • Error : 에러 정보를 저장할 때 쓰인다.
  • 기타 등등

Categories:

Updated: