분류 전체보기

    JavaScript - this? this!

    이번 포스팅에서는 자바스크립트의 this에 대해 알아보고자 한다. this란? this 바인딩 화살표 함수와 this 1. this란? 일반적으로 객체지향 언어에서 this는 클래스로 생성한 인스턴스 객체를 의미한다. 하지만 자바스크립트의 this는 클래스에서만 사용되는 것이 아니라 어디서든 사용될 수 있으며 상황에 따라 this가 바라보는 대상이 달라지기도 한다. 이러한 특성 때문에 자바스크립트를 공부할 때 혼란스러움을 겪는 개념 중의 하나가 바로 this가 아닐까 싶다. this가 난해한 이유는 바로 상황에 따라 this가 가리키는 대상이 달라지기 때문인데, this가 바라보는 대상이 무엇인지에 대한 실마리는 this가 결정되는 시점에서 얻을 수 있다. 자바스크립트에서 this는 기본적으..

    JavaScript - 불변성(Immutability)

    이번 포스팅에서는 불변성(Immutability)에 대해 알아보고자 한다. Immutable type Mutable type 1. Immutable type 불변성에 대해 알아보기 위해서는 우선 자바스크립트의 변수 타입에 대해 살펴볼 필요가 있다. 자바스크립트의 변수는 크게 원시 타입(Primitive type)과 참조 타입(Reference type)으로 나눌 수 있으며, 원시 타입의 종류는 아래와 같다. Boolean String Number undefined null Symbol (ES6부터 추가) 이러한 원시 타입의 데이터들은 소위 불변성(Immutability)을 갖고 있다고 얘기한다. 실제 변수에 값이 할당되는 과정을 살펴보면서 이해해보도록 하자. let str = "Hello";..

    JavaScript - 일급 객체(First Class Object) & 일급 함수(First Class Function)

    이번 포스팅에서는 일급 객체(First Class Object)와 일급 함수(First Class Function)에 대해 알아보고자 한다. 프로그래밍 언어를 공부하다 보면 "일급 객체" 혹은 "일급 함수"라는 말을 많이 듣게 된다. 과연 어떠한 객체 혹은 함수에게 "일급"이라는 표현을 사용하는 것일까? 우리는 특정 조건을 만족하는 객체들을 "일급 객체"라고 부른다. 컴퓨터 프로그래밍 언어 디자인에서, 일급 객체(First Class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. 출처 : https://ko.wikipedia.org/wiki/일급_객체 다시 ..

    ABOUT.Series (12) IoC (Inversion of Control; 제어의 역전) & DI (Dependency Injection; 의존성 주입)

    이번 포스팅에서는 제어의 역전(IoC; Inversion of Control)과 의존성 주입(DI; Dependency Injection)에 대해 알아보고자 한다. (예제 코드는 TypeScript를 사용하였다.) IoC (Inversion of Control) - 제어의 역전 DI (Dependency Injection) - 의존성 주입 IoC & DI 1. IoC (Inversion of Control) - 제어의 역전 제어의 역전(IoC)이란, 소프트웨어 설계 원칙 중 하나로 프로그래밍에 있어 객체의 생성 및 관리 책임을 개발자에서 전체 애플리케이션 또는 프레임워크에 위임하는 디자인 원칙을 일컫는다. 프레임워크 없이 개발을 진행할 때는 개발자가 객체의 생성 및 관리 등의 흐름을 직접 제..

    TypeScript - 인터페이스 vs 추상 클래스

    이번 포스팅에서는 인터페이스(interface) 와 추상 클래스(abstract class)의 차이점에 대해 알아보고자 한다. (기본적으로 인터페이스와 추상 클래스가 무엇인지 알고 있다는 전제 하에 차이점에만 초점을 맞춰보았다,,) 인터페이스 vs 추상 클래스 왜 추상 클래스가 필요한가? 1. 인터페이스 vs 추상 클래스 인터페이스(interface)와 추상 클래스(abstract class)의 차이점에 대해 크게 다음의 관점으로 살펴보고자 한다. 구현 방식 상속과 구현 접근 제한자 (1) 구현 방식 인터페이스는 객체의 구조를 정의하는 역할을 하며, 이를 구현(implements)한 클래스는 인터페이스에 명시된 모든 속성과 메소드를 가지고 있어야 한다. 다시 말해, 인터페이스는 메소드와 속성..