클래스란, 어떤 객체를 빠르게 생성해내기 위한 틀과 같은 것이다.

 

특정한 모양의 빵을 만들거나, 어떤 모양의 그릇을 대량으로 만든다고 하면

일반적으로 하나 만들 때 마다 하나 씩 손으로 만들어 내는 것 보다 틀을 만들어서 재료를 넣는 것이 더 빠르게  만들 수 있다.

 

위의 예시에서 클래스(Class)는 어떤 모양의 틀을 의미하고, 인스턴스(Instance)는 틀에 적용되어 생성된 객체를 의미한다.

 

자바스크립트에서 클래스를 만들기 위해서는 Class + 클래스 이름으로, 아래와 같이 선언해주면 된다.

Class Person {
	// 여기에 내용이 들어갑니다.
}

클래스를 만들기 위해서 반드시 포함되어야 하는 요소가 있는데, 그것은 바로 생성자 함수다.

생성자 함수는 객체 생성의 필수 구성 요소를 규정하는 역할을 하며

지정은 constructor 안으로 넣어주면 된다.

class Person {
	constructor(name, age){ // Person을 만들 때, name과 age를 필수로 하겠다.
		this._name = name;
		this._age = age;
        }
}

let new_person = new Person("people_1", 20) // 객체 생성

위 예시 코드에서 this.name 이나 this.age 가 의미하는 것은

name 을 people_1로, age를 20으로 하는 객체를 new_person 이라는 변수로 만든다는 의미이다.

 

객체에는 생성을 위한 생성자 함수 외에도 method 기능을 넣을 수 있으며 일반적인 함수 생성과 크게 다르지 않다.

class Person {
	constructor(name, age){ // Person을 만들 때, name과 age를 필수로 하겠다.
		this._name = name;
		this._age = age;
        }
    
    greeting(){
    	console.log(`Hi, my name is ${this._name}`);
    }
    
}

let new_person = new Person("people_1", 20) // 객체 생성
new_person.greeting(); // output : "Hi, my name is perople_1"

위 코드 예시에서 추측할 수 있는 것 처럼 생성된 객체의 속성을 불러오는 것도 가능하며 (getter, get + 함수명)

객체 생성 이후 속성을 변경하는 것(setter, set + 함수명) 또한 가능하다.

 

class Person {
	constructor(name, age){ // Person을 만들 때, name과 age를 필수로 하겠다.
		this._name = name;
		this._age = age;
        }
    
    greeting(){
    	console.log(`Hi, my name is ${this._name}`);
    }
    
    get get_name(){	// 이름을 반환하는 함수
    	return this._name;
    }
    
    get get_age(){	// 나이를 반환하는 함수
    	return this._age;
    }
    
    set change_name(value){	// 이름을 변경하는 함수
    	this._name = value;
    }
    
    set change_age(value) {	// 나이를 변경하는 함수
    	this._age = value
    }
    
}

let new_person = new Person("people_1", 20) // 객체 생성
new_person.greeting(); // output : "Hi, my name is perople_1"

console.log(new_person.get_name); // output : people_1
console.log(new_person.get_age); // output : 20

new_person.change_name = "people_2";	// 이름 변경
new_person.change_age = 21;	// 나이 변경

console.log(new_person.get_name); // output : people_2
console.log(new_person.get_age); // output : 21

 

'Backend > Node js' 카테고리의 다른 글

[Nodejs] Express 프레임워크 시작하기  (0) 2023.04.22
[Javascript] 배열의 조합 구하기  (1) 2023.04.15
[Javascript] 콜백 함수란  (0) 2023.04.13
[javascript] ES6 에서 추가된 것들  (0) 2023.04.09
[Javascript] This 란?  (0) 2023.04.07