Node

[Node.js] 클래스 간단하게 사용해보기

YaluStar 2023. 2. 7. 17:15

안녕하세요.

이번에는 객체를 생성할 때 사용하는 클래스를 간단하게 사용해보겠습니다.

 

자세한 내용은 다른 글을 참조하시기 바랍니다.

 

 

  1. 클래스
  • 객체를 생성하기 위한 템플릿

 

ex)

객체 : 고양이

속성 : 이름 – 나비

나이 – 1살

메소드 : mew() – 울다, eat() - 먹는다

 

자동차를 예시로 들어보겠습니다.

먼저 Car 라는 클래스를 생성합니다.

constructor() 함수는 Car 클래스를 만들었을 때 기본적으로 가지게 되는 설정 값이라고 보면 됩니다.

여기서는 constructor(color) 함수 안에 color, isDoor를 설정해놨습니다.

isDoor는 true로 값이 설정되어 있지만, color는 인자 값으로 받아서 데이터를 저장하는 것을 볼 수 있습니다.

추가로 move() 함수, stop() 함수가 설정되어 있고, returnColor() 함수로 설정된 자동차 색을 반환해주는 함수도 있는 것을 볼 수 있습니다.

그리고 만든 클래스를 module로 내보낼 수 도 있습니다.

class Car {
    constructor(color) {
        this.color = color;
        this.isDoor = true;
    }
    move() {
        console.log('움직인다');
    }
    stop() {
        console.log('멈춘다.');
    }
    returnColor() {
        return this.color;
    }
}
module.exports = { Car };

 

먼저 js 파일을 2개 만들어서 각각 데이터를 입력합니다.

 

t1.js

class Car {
    constructor(color) {
        this.color = color;
        this.isDoor = true;
    }
    move() {
        console.log('움직인다');
    }
    stop() {
        console.log('멈춘다.');
    }
    returnColor() {
        return this.color;
    }
}

module.exports = { Car };

 

t2.js

const { Car } = require('./t1.js');
console.log('Car : ', Car);

var car1 = new Car('red');
var car2 = new Car('blue');
var car3 = new Car('yellow');

// new Car()을 하여 생성하게되면 constructor() 이 기본적으로 생성됨
// 현재 Car() 클래스의 constructor(color)에는 color 이라는 파라미터 값을 받기 때문에
// 생성할 때 필요한 값을 추가로 입력해줘야 한다.

console.log('car1 color: ', car1.returnColor());
console.log('car2 color: ', car2.returnColor());
console.log('car3 color: ', car3.returnColor());

 

t1.js에서 만든 Car 클래스를 t2.js 에서 require 함수로 불러와서 사용하고 있습니다.

t2.js 함수를 실행하면 다음과 같이 결과를 볼 수 있습니다.

 

여기서 car1, car2, car3 만들 때 new Car(); 를 사용하고 있습니다.

이때 new Car()를 사용해서 생성하게되면 Car 클래스의 constructor()이 기본적으로 생성이 됩니다.

Car 클래스의 constructor() 함수의 경우에는 color 값을 인자 값으로 받기 때문에

new Car(’색’) 의 방식으로 사용을 해야 합니다.

각 변수에 color를 설정하여 생성하고 콘솔로 returnColor 함수를 호출하면 저장된 색을 확인할 수 있습니다.

 

 

감사합니다.

 

반응형