Programming/JavaScript

[JavaScript] Core: Object

Isaac S. Lee 2023. 10. 11. 11:54

🍁Object


자바스크립트에 클래스는 없는 대신에 내장 객체를 제공한다고 했다.

 

이건 클래스가 아닌가요?

class Test {
    
}

아닙니다. 이건 클래스의 껍데기를 가진 다른 것이에요.

 

내장 객체

  • new Array()
  • new Date()
  • Math.메소드()
  • 기타 등등..

내장 객체에는 Array, Date, Math, Object 등이 있다.

 

BOM 객체

  • window
  • document
  • form
  • text
  • button
  • 기타 등등..

 

DOM 객체

  • element
  • attribute
  • text
  • comment
  • 기타 등등..

DOM 객체는 노드들을 의미한다.

 

위의 객체들은 이미 타입이 정의되어 있어서 개발자가 가져다 쓰는 것들이다.

그러나 개발을 하다 보면 개발자가 스스로 타입을 정의해야 하는 일이 생긴다. 이럴 때 사용하는 것이 사용자 정의 객체이다.

 

🍂사용자 정의 객체

자바스크립트에는 클래스가 없기 때문에 원하는 형태의 객체 생성이 불가능하다.

사용자 정의 객체가 원하는 형태의 객체를 만들 수 있게 해 준다.

 

사용자 정의 객체의 특징

1. Object 내장 객체를 사용한다.

const obj1 = new Object();

2. {} 객체 리터럴 표기법을 사용한다.

const obj2 = {};

 

사용자 정의 객체 생성

class User {
    public String name;
    public int age;
    public String address;
}

User isaac = new User();

isaac.name = 'isaac';
isaac.age = 20;
isaac.address = "서울시 강남구";

위 코드는 자바에서 클래스를 구현하는 방법이다.

이를 자바스크립트에서 구현해 보도록 하자.

 

const 선언 (클래스 생성)

const isaac = new Object();

먼저 const로 상수를 선언하고, 이를 클래스라고 생각해 보자.

하지만 이 클래스 안에는 name, age, address라는 멤버가 없다는 문제가 있다.

 

객체의 프로퍼티 (멤버 생성)

isaac.name = 'Isaac';
isaac.age = 20;
isaac.address = '서울시 강남구';

console.log(isaac.name);
console.log(isaac.age);
console.log(isaac.address);

이를 객체의 프로퍼티(Property)라고 부른다.

자바스크립트의 모든 객체는 프로퍼티를 자유롭게 추가하고 삭제할 수 있다.

이게 자바스크립트에서 객체를 추가해서 멤버를 추가하는 방법이다.

 

프로퍼티를 넣는 방법

isaac.tel = '010-1234-5678'; //멤버처럼 표현
isaac['tel'] = '010-1234-5678'; //key값처럼 표현

멤버(프로퍼티)를 넣는 다른 방법이 존재한다.

위의 설명에서 사용한 것처럼 프로퍼티를 멤버처럼 표현하는 방법도 있지만, map에서 사용하는 것처럼 key값 형태로도 표현이 가능하다.

let key = 'tel';
isaac[key] = '010-1234-5678';
//isaac-primary-phone = '010-1234-5678';
isaac[primary-phone] = '010-1234-5678';

평상시에는 멤버처럼 표현하면 되고, 위와 같은 상황에서는 key값 형태로 표현하는 게 좋다.

 

정리

  • JavaScript 객체 만들기

1. 빈 객체를 만든다.

const object = new Object();

2. 원하는 프로퍼티를 추가한다.

obj.name = '';

 

하나의 코드로 객체를 선언하고 프로퍼티를 넣는 표현

//const park = {}; //new Object();
//park.name = '박필견'
//park.age = 40;
//park.address = '평양';

const park = {
    name: '박필견',
    age: 40,
    address: '평양'
};

console.log(park);

위와 같이 객체를 생성하고 동시에 프로퍼티를 넣을 수 있다.

 

객체 안에 또 다른 객체 넣는 표현

1번째 표현

const address = {
    si: '인천시',
    gu: '계양구',
    dong: '박촌동'
}
const Eom = {
    name: '엄석대',
    age: 30,
    //address: '인천시 계양구 박촌동'
    address: address //객체 안에 또 다른 객체
}

 

2번째 표현

const Eom = {
    name: '엄석대',
    age: 30,
    //address: '인천시 계양구 박촌동'
    address: {
        si: '인천시',
        gu: '계양구',
        dong: '박촌동'
    } //객체 안에 또 다른 객체
}

 

객체 안에 메서드를 넣는 표현

const ha = {
    name: '하후돈',
    age: 3,
    hello: m1
}

function m1() {
    alert('안녕하세요');
}

객체 안에 변수만 만들 수 있는 게 아니라 메소드도 만들 수 있다.