JavaScript - Object

윤수빈·2024년 7월 30일
0

자바스크립트에서 오브젝트는 객체를 의미한다.

JS에서 가장 중요하고 많이 사용되는 데이터 타입이다.


1. 선언 및 정의

객체 선언 및 정의는 아래와 같다.

let gildong = {
    name : '홍길동',
    key : 170,
    attack : function (){
        return `${this.name}이 공격합니다.`;       
    }
};

각 문자열, 숫자, 함수 를 선언하고 정의했다.

this 키워드는 현재 객체의 프로퍼티를 호출하기 위해 사용된다.

추가로, 변수로 정의하는 방법도 있다.

const name = '홍길동';
const gildong = {
    name,
};

이렇게 하면 'name':'홍길동' 으로 Key:Value 가 자동으로 정의된다.


2. 호출

호출 방법은 아래와 같다.

// 객체의 모든 프로퍼티를 출력
console.log(gildong);

// 객체의 name 에 담긴 value 출력
console.log(gildong.name);
console.log(gildong['name']);
const key = 'name';
console.log(gildong[key]);

// 객체의 attack() 함수 호출
console.log(gildong.attack());

또한, 모든 키값, 밸류값을 가져오는 방법도 있다.

  • 모든 키값 호출
    Object.keys(gildong)
    console.log(Object.keys(gildong));

  • 모든 밸류값 호출
    Object.values(gildong)
    console.log(Object.values(gildong));


3. 변수에 담긴 Key, Value를 객체에 담기

변수에 담긴 Key 혹은 Value 는 아래 방법처럼 정의가 가능하다.

// name 의 Key:Value
const nameKey = 'name';
const nameValue = '홍길동';

// height 의 Key:Value
const heightKey = 'height';
const heightValue = 170;

const gildong2 = {
    [nameKey]: nameValue,
    [heightKey]: heightValue,
}

4. 객체 값 변경

추가

gildong2['skill'] = 'rage';

수정

gildong2['height'] = 180;

삭제

delete gildong2['skill'];


5. 객체의 특징

  • const로 선언할 경우 객체 자체를 변경할 수는 없다.
  • 단, 객체 안의 프로퍼티나 메서드는 변경할 수 있다.

Copy by Value & Copy by Reference 에서 다룬 내용처럼 객체는 프로퍼티를 가리키는 메모리 공간과 프로퍼티가 담긴 메모리 공간으로 구성되어 있다.

그렇기 때문에 const로 선언된 객체는 예를 들어,

const gildong3 = {
    name : '홍길동',
    key : 170,
    attack : function (){
        return `${this.name}이 공격합니다.`;       
    }
};

으로 gildong3 이 const로 선언 및 정의되어 있을 때,
gildong3 = {};객체 자체를 변경하는 것은 불가능하다.

하지만
gildong3['name'] = '김철수' 처럼 gildong3의 프로퍼티를 변경하는 것은 가능하다는 것.

profile
정의로운 사회운동가

0개의 댓글