javascript에서 다음과 같은 메소드를 사용한 경험이 있을 것이다. "hello world!"와 1.4435 는 Primitive 타입이다. 즉, 객체가 아니기에 가지고 있는 메소드가 없다. 하지만 메소드를 사용할 수 있는 이유가 바로 Boxing 과정이 이루어
SOLID에서 L에 해당되는 Liskov Substitution Principle(LSP)이다. 이 원칙은 서브 타입은 기반 타입을 대체할 수 있다는 법칙이다. 즉, 부모 클래스 A를 상속한 클래스 B는 언제든 A클래스를 대체할 수 있다는 뜻이다. 이것은 다형성(pol
ES6이전에 사용하던 function 키워드를 이용한 regular function과 ES6에 도입된 arrow function =>을 비교하고 무엇을 선택해야 하는지 정리해보고자 한다.Regular function은 호출할 때 This 바인딩을 진행한다. 메소드가 호
then 메소드를 갖는 객체를 뜻한다. 체이닝이나 await과 같은 promise 패턴을 가진 구문에서 사용할 수 있다. 모든 promise객체는 thenable 객체이지만 역은 성립하지 않는다.위의 예시처럼 thenable 객체는 await를 통해 then() 메소드
어떤 객체에서 다른 클래스를 의존하고자 할 때 구상 클래스에 의존하지 말고 인터페이스와 같이 추상화 된 것에 의존하라는 법칙이다. DIP에서 의존성은 객체간에 의존성을 말한다. 이를 역전한다는 것의 의미는 구상클래스에 의존하는 부분을 추상화한 클래스나 인터페이스로 의존
하나의 클래스는 하나의 책임만 가져야 한다. 로버트 마틴이 얘기한 Single Responsibility Principle(SRP)이다. SOLID원칙 중 S에 해당하는 원칙으로 개체지향원칙의 중요 원칙 중 하나이다. 의미 단일 책임이란 것은 하나의 클래스가 변경되
정의 promise는 JS에서 비동기 처리를 하기 위한 객체이다. 3가지 상태를 가지고 있으며 미래의 성공 혹은 실패에 대한 값을 가지고 있다. 3가지 상태는 다음과 같다. pending: 처리되지 않은 대기상태 fulfilled: 연산이 성공한 상태 rejecte
generator function을 통해 반환된 객체이다. Iterable protocol을 만족하면서 Iterator protocol을 만족하는 객체이다.generator의 특징을알기 위해서는 Iterable protocol과 Iterator protocol에 대해
주니어인 내가 늘 하는 고민이 있다. 이 코드는 여기에 있어야 할까? 아니면 저쪽에 있어야 할까? 저쪽에 있어도 좋아보이고 이쪽에 있어도 좋아보이고... 이러한 고민을 늘 했었다. 즉, 왜 이렇게 짰는지에 대한 기준이 없었다. 기준이 없기에 난 일관되지 않는 코드를 짜
애플리케이션의 기능들이 추가되고 규모가 커짐에 따라 코드양이 많아지고 복잡해진다. 코드의 복잡성이 올라가면서 자연스럽게 유지보수가 어려워져 필연적으로 분리를 필요로 하게 된다. 코드를 관심사나 기능별로 파일을 분리하고 캡슐화하여 복잡성을 줄이는 패턴이 Module Pa
자바스크립트는 흔히 프로토타입 기반 언어라 불린다. 모든 객체들이 메소드와 프로퍼티를 상속 받기 위해서 프로토타입 객체를 가진다는 의미다. prototype객체도 prototype을 갖고 상위의 프로토타입 객체도 마찬가지다. 이를 프로토타입 체인이라고 한다. 이에 대해
HTTP와 HTTPS의 차이점은 무엇인지 확인해보고자 한다.HTTP는 HyperText Transfer Protocol의 약자다. 해석하자면 HyperText를 전송하는 규약을 뜻한다. 즉, 서로 다른 시스템 간에 데이터를 주고받게 해주는 프로토콜이다. 하지만 HTTP
웹 캐시(Web-cache)는 웹에서 사용하는 캐시를 뜻한다. 캐시가 뭘까?캐시란?데이터나 값을 미리 복사해두어 사용하는 장소를 뜻한다. 어떤 값을 다시 계산하는 시간을 줄이기 위해 캐시를 사용한다. - https://ko.wikipedia.org/wiki/캐
Javascript 공부를 하면 항상 나오는 개념이 클로저(Closure)다. 아는 것 같지만 모르는게 더 많은 거 같은 신비한 클로저에 대해 정리해보고자 한다.클로저는 Javascript만 사용하는 개념은 아니다. 함수를 일급 함수로 다루는 언어 혹은 런타임에 함수를
Map 자료구조는 객체 리터럴(literal)과 비슷해보인다. key-value 쌍을 이용하는 자료구조이고 입력한 순서대로 순회도 할 수 있다. 하지만 둘은 차이가 있다. Map과 객체 리터럴의 차이 Map은 모든 타입 형태에 키가 가능하지만 객체 리터럴은 strin
콜백 함수(callback function)은 다른 코드의 인자로 넘기는 함수를 의미한다. 넘겨받은 코드는 콜백 함수를 적절한 시기에 호출하여 실행시킨다. 콜백함수의 예로 자주 쓰이는 것이 있다.6시에 일어나기 위해 알람을 맞춰놓고 푸욱 자는 A6시에 일어나기 위해 매
역시 정리되지 않는 개념은 내게 아니라는 생각이 든다. 알고 있다고 착각한 const, var, let에 대해 정리해본다. ❌ var 우선 JS에서 var는 ES6 이전부터 사용되고 있는 변수 선언 예약어이다. 특징 함수 스코프(scope)를 갖는다. 재할당 가능하
Java의 기능을 가져온 Javascript에서 this의 동작 방식은 Java와 많이 다르다. 클래스 기반의 Java의 this는 자기 자신, 인스턴스를 가르킨다. 하지만 Javascript의 this는 상황에 따라 달라진다. Java Javascript의 생성자
정의 확장에는 열려있고 변화에는 닫혀있다는 뜻. 다시 말하면, 변경사항에 대해 기존 코드는 변경하지 않고(Closed) 기능을 추가(Open)하는 것을 의미한다. 직접적으로 두 클래스 간에 직접적으로 의존하게 되면 기존 코드에 변경이 생길 수 밖에 없다. 구현체에