JS 심화 개념 정리

김도현·2024년 3월 12일

JavaScript

목록 보기
2/4
post-thumbnail

1. 클래스

  1. 클래스는 객체를 생성하기 위한 템플릿이다!
  2. 클래스는 함수로 호출 될 수 없다.
  3. 클래스 필드를 사용하여 클래스 속성을 최상위 레벨에서 정의가 가능하고 클래스 내부나 메소드 내부에서 this키워드 사용할 수 있다.

클래스 상속

class Parent {
// ...
}
class Child extends Parent {
// ...
}

클래스 상속(class inheritance, subclassing) 기능을 통해 한 클래스의 기능을 다른 클래스에서 재사용할 수 있습니다.

  • 자식 클래스 A를 통해 부모 클래스 B의 정적 메소드와 정적 속성을 사용할 수 있습니다.
  • 부모 클래스 B의 인스턴스 메소드와 인스턴스 속성을 자식 클래스 A의 인스턴스에서 사용할 수 있습니다.

2. 이터러블

이터러블은 반복할 수 있는 이라는 의미를 가지고 있습니다.

Symbol.iterator 라는 메서드를 가지고 있어야 하며, 가장 대표적으로 배열과 문자열이 있습니다.

간혹 이터러블하면서 유사 배열인 객체가 있을 수 있지만, 유사배열과 이터러블은 특징이 다르기 때문에 무조건 유사 배열이라해서 이터러블 한 것도, 이터러블이라고 해서 유사배열인 것이 아니라는 것을 기억하자!

3. 제너레이터

next()는 제너레이터의 주요 메서드입니다. next()를 호출하면 가장 가까운 yield <value>문을 만날 때까지 실행이 지속됩니다(value를 생략할 수도 있는데, 이 경우엔 undefined가 됩니다). 이후, yield <value>문을 만나면 실행이 멈추고 산출하고자 하는 값인 value가 바깥 코드에 반환됩니다.

next 메소드를 호출하기 위해 Symbol.iterator메소드로 이터레이터를 별도 생성할 필요가 없다.

console.log(generator.next());
// {value: 1, done: false}console.log(generator.next());
// {value: 2, done: false}console.log(generator.next());
// {value: 3, done: true}

제너레이터 객체의 .next() 메소드를 호출할 때마다, 제너레이터 객체는 스스로 깨어나서 다음번 yield문에 다다를 때까지 실행된다.

for(let value of generator) {
 console.log(value);// 1, 2
}

참고로 generator를 for-of문으로 돌리면 1, 2까지만 출력된다. 이유는 for-of 이터레이션이 done: true일 때 마지막 value를 무시하기 때문이다. 그러므로 for-of를 사용했을 때 모든 값이 출력되길 원한다면 yield로 값을 반환해야한다.

4. 라이브러리

  • 라이브러리란 개발자가 만든 클래스들의 나열로, 다른 프로그램들에서 사용할 수 있도록 제공하는 방식이다.

5. 프레임워크

  • 개발자가 소프트웨어를 개발함에 있어 코드를 구현하는 개발 시간을 줄이고, 코드의 재사용성을 증가 시키기 위해 일련의 클래스 묶음이나 뼈대, 틀을 라이브러리 형태로 제공되는 것을 말한다.
  • 제어의 역전 개념이 적용된 대표적인 기술이다.

프레임워크의 특징

  • 개발자가 따라야 하는 가이드를 제공한다.
  • 개발할 수 있는 범위가 정해져있다.
  • 개발자를 위한 다양한 도구 , 플로그인들을 지원한다.

6. 프레임워크와 라이브러리의 차이점

: 라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에게 있는가에 있다.

즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다.

  • 프레임워크는 그 스스로 제어 흐름의 주도성을 갖는 반면, 라이브러리는 개발자가 가지고 있다.
  • 프레임워크는 집이고, 라이브러리는 그 집 안의 가구이다.
  • 라이브러리와 달리 프레임워크는 이미 프로그래밍에 대한 규칙을 가지고 있다. 예를 들면 설정파일의 태그설정이나, DB연동 방법등에 대한 규칙을 가지고 있고 개발자는 이를 따라야한다.

profile
두니코딩

0개의 댓글