[JavaScript] 기본개념 정리

yoon052·2023년 5월 2일

JavaScriptBasic

목록 보기
6/10
post-thumbnail

해당 벨로그는 드림코딩의 자바스크립트 기초 강의 (ES5+) 를 보고 작성한 글입니다.

getter & setter

자판기를 예시로 getter & setter 를 생각해보자.

class → 자판기

method → 동전 넣기. 커피 만들기

커피 개수를 -1이라고 설정하면 안되니까, 이때 getter 와 setter 가 필요하다.

setter → 커피 개수를 0 으로 만들어준다.

캡슐화 → 관리자외 타인이 커피 개수 설정을 건드리지 못하도록 private 으로 만든다.


get → 이 키워드를 통해 값을 return 한다.

set → set 을 통해 값을 설정한다. set 은 값을 설정하기 때문에 값(value) 을 받아와야한다.

age 라는 getter 를 정의하는 순간, this.age 는 메모리에 올라온 값을 읽어오는 것이 아니라,

getter 를 1순위로 호출한다.

age 라는 setter 를 정의하는 순간, age 라는 값을 this.age 에 할당할 때, 바로 메모리의 값을 할당하는 것이 아니라 setter 를 호출하게 된다. → 전달된 value 를 this.age 에 할당할 때, 메모리의 값을 업데이트 하는 것이 아니라 setter 를 호출하게 된다. 그래서 무한 루프에 빠지게 된다.

⇒ 그래서 무한 루프를 방지하기 위해 this.age 와는 다른 이름을 getter & setter 에 사용해야 한다. 보통 _ 로 차이점을 두어서 this._age 이렇게 사용한다. (하단 이미지 참조)


하단 이미지

그래서 변수는 firstName, lastName, this._age 이렇게 총 3개가 존재한다.


setter 로 age 가 0보다 작은 경우 에러메시지를 출력하도록 설정한다.



Static

오브젝트, 데이터와 상관없이 클래스가 가지고 있는 고유한 값과 데이터와 상관없이 동일하게 반복적으로 사용되는 메소드가 있을 수 있다. 이런 것들을 static 이라는 키워드로 붙이면, 오브젝트와 상관없이 클래스 자체에 연결되어 있게된다.


article1, article2 라는 오브젝트를 생성한다.

static 을 사용하지 않았다면, article1.publisher 를 출력했을 때, 가능한 일이었다.


하지만 article1.publisher 출력 결과는 undefined 다.

즉, 결과 undefined는 ‘오브젝트 안의 publisher 는 값이 지정되지 않았다’ 라는 의미이다.


static 의 사용은 메모리 사용을 줄이는 효율적인 방법이다.



상속 & 다형성

중복되는 속성값을 재사용한다면 메모리를 더 효율적으로 사용할 수 있다. 유지 보수도 더 쉬워진다.


상속

extends 라는 코드를 통해 자식이 부모를 상속받을 수 있다.

extends, 상속을 통해서 부모의 있던 모든 코드들이 자식에 포함된다.


다형성 → 우리가 필요한 함수만 재정의 할 수 있다.

다른 클래스에서 메소드를 오버라이딩 해서 다형성을 이용한다.


클래스 Shape 에서 정의된 메소드 getArea() 를 Triangle 에서 Shape 를 상속받아, getArea() 를 오버라이딩(재정의) 해서 삼각형 넓이 공식을 사용해 넓이를 구할 수 있게 되었다.

오버라이딩(재정의) 하게되면, 부모 클래스의 동명 클래스는 더 이상 사용할 수 없다.


부모 클래스도 사용하고 추가적으로 코드를 작성해 오버라이딩하고 싶다면 super 를 사용하면 된다.

profile
개발자 지망생

0개의 댓글