하루하루 꾸준히, 인생은 되는대로

카테고리 없음

자바스크립트 객체

긤효중 2022. 5. 14. 23:56

자바스크립트의 객체는 자바스크립트의 나머지 데이터 타입 (원시형 타입)과 달리 다양한 데이터를 담을 수 있다.

키로 구분된 데이터 집합이나 복잡한 개체를 저장할 수 있다. 객체는 중괄호를 이용해 만들 수 있다.

중괄호 안에는 '키(key) : 값(value)' 쌍으로 구성된 프로퍼티를 여러 개 넣을 수 있는데 ,

에는 문자형, 값 에는 모든 자료형이 허용된다.

프로퍼티 키는 '프로퍼티 이름'이라고도 한다.

 

중괄호 안에는 key와 value쌍으로 이루어진 프로퍼티를 넣을 수 있다.

let user = new Object(); 
let user = {} //두 방법 모두 객체를 만들 수 있다.

리터럴과 프로퍼티

중괄호 {...}안에는 '키:쌍'으로 구성된 프로퍼티가 들어간다.

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

클론 : 을 기준으로 왼쪽이 key값, 오른쪽이 value 값이다.

위의 코드를 살펴보면,

 

객체 user에는 프로퍼티가 2개 있는데, 첫번쨰 프로퍼티 - "name"이름과 "John"(값),

두 번쨰 프로파티 - age(이름)과 30(값)이 있다.


프로퍼티를 추가,삭제하는 방법

일단 프로퍼티를 가져오는 방법이다. 점 표기법(dot notation)을 이용하면 프로퍼티의 값을 읽을 수 있다.

alert(user.name);
alert(user.age);

프로퍼티 값에는 모든 자료형이 올 수 있다. 불린형 자료형을 객체 user에 추가해본다면,

user.isAdmin = true;

이런식으로 추가가능하다.

 

다음은 프로퍼티의 삭제이다. delete 연산자를 사용하면 프로퍼티를 삭제 할 수 있다.

delete user.age;
delete user.name;
delete user.isAdmin;

 

상수 객체는 수정될 수 있다.

const user = {
  name: "John"
};

user.name = "Pete"; // (*)

alert(user.name); // Pete

위의 코드는 user의 name은 고정된 것이 아니라 Pete로 바뀐다. 

constuser = ....를 전체적으로 설정하려고 할 떄만 오류가 발생한다.


대괄호 표기법

 

여러 단어를 조합해 프로퍼티 키를 만든 경우, 점 표기법으로 프로퍼티 값을 읽을 수 없다.

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

let key = prompt("사용자의 어떤 정보를 얻고 싶으신가요?", "name");

// 변수로 접근
alert( user[key] ); // John (프롬프트 창에 "name"을 입력한 경우)

user["name"],user["age"] 이런식으로 프로퍼티 값을 읽을 수 있다.


프로퍼티 존재여부: 'in'연산자

 

자바스크립트 객체의 존재하지 않는 프로퍼티에 접근하면 undefined를 반환한다.

let user = {};

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

예시를 살펴보자

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

alert( "age" in user ); // user.age가 존재하므로 true가 출력됩니다.
alert( "blabla" in user ); // user.blabla는 존재하지 않기 때문에 false가 출력됩니다.

age는 user.ae로 존재하므로 true를, user.blabla는 존재하지 않으므로 undefinde를 출력한다.


for in..반복문

 

for..in반복문을 사용하면 객체의 모든 키를 순회할 수 있다.

<!DOCTYPE html>
<script>
"use strict";

let user = {
    name:"JON",
    age:30,
    isAdmin:true,
}

for (let key in user){
    alert(key);
    alert(user[key]);
}
</script>

객체의 정렬 방식

 

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

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

for(let key in codes){
    alert(key);
    alert(codes[key]);
}

정수 프로퍼티->

정수 프로퍼티는 변형 없이 정수에서 왔다 갔다 할 수 있는 문자열을 의미한다.

문자열 "49"는 정수로 바꾸거나 변환한 정수를 문자열로 바꿔도 변형이 없기 때문에 정수 프로퍼티고,

"-1000","+2000"는 정수 프로퍼티가 아니다.