Class - 1

민태영·2023년 6월 9일
0

클래스 개념 : 설계도

  • 객체를 생성하기 위한 템플릿
  • 객체지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀
  • 객체를 정의하기 위한 상태(멤버 변수)와 메서드(함수)로 구성된다.
클래스 = 붕어빵틀, 객체 = 붕어빵

클래스를 위 사용하는가?

  • 함수의 중복을 예방하여 유지보수를 효율적으로 하기위함
  • 실제 같은함수가 재활용되는 실무에서 굉장히 효율적임

인스턴스 : 설계도로 만들어진 실체

예시)

class Ex {
	constructor (exParam) {
    	this.exVal = exParam
    }
	
    showExVal() {
    	console.log(this.exVal)
    }
}

let exUser = new Ex('hi')

exUser.showExVal()
// hi

1) constructor

class에서 기초정보를 세팅하는 '생성자함수'로 하나의 class에는 하나의 constructor가 존재한다. 객체를 new로 생성할 때 가장 먼저 자동으로 호출된다.

2) 인스턴스 (실제 객체) 생성 사용

  • 위의 Ex클래스(설계도)의 인스턴스를 생성하는 방법은 아래와 같다. 인스턴스라는 말이 어렵게 느껴지는데 그냥 Ex클래스를 다른이름으로 사용한다고 생각하면 쉽다.

  • 인스턴스를 생성할 때 Ex(값)을 입력하면 constructor가 받아서 정의한다.

let exUser = new Ex('hi')


exUser.showExVal()
  • Ex의 인스턴스를 생성하면 Ex클래스안에 정의한 메서드를 인스턴스에서 사용할 수 있다.

3) get set

get set을 사용하는 이유:

  • 클래스를 직접적으로 내부적으로 정의하면 위험요소가 많음
  • 들어오는 값을 constructor만으로는 검증하기 힘듦

예시)

class Ex {
	constructor (exParam) {
    	this.exVal = exParam
    }
	
    showExVal() {
    	console.log(this.exVal)
    }
    
    set exVal () {
    	this.exVal = value 
    }
    
    get exVal () {
    	return this.exVal
    }
    
}

let exUser = new Ex('hi')

exUser.showExVal()

! 여기서 주의 해야할 것은 this.exVal을 그대로 써주면 무한재귀(무한루프)에 걸리수 있다. 예를 들어 set을 정의한 후
constructor에 값을 정의 할때 this.exVal = exParam가 내부의 set exVal을 호출시킨다. set exVal()에서 this.exVal = value하여 constructor로 정의 하려고 하면 또 constructor가 set exVal을 호출시키기 때문에 무한 루프에 빠지게 된다.

해결방법

this.변수의 변수 앞에 를 붙인다.
=> this.
exVal
해당 인스턴스내에서만 쓰이기 위한 변수로 분리하는 것으로
겹치는 현상을 없애준다.

profile
꿈을 꾸는 개발자

0개의 댓글