
Promise ES6에서 비동기 처리를 위한 또 다른 패턴으로 프로미스를 도입했다. 프로미스는 콜백 패턴이 가진 단점을 보완하며 비동기 처리 시점을 명확하게 표현할 수 있다는 장점이 있다. // 프로미스로 코드를 분리할 수 있다는 점이 콜백 패턴과의 가장 큰 차이점이 아닐까? 비동기 함수란 함수 내부에 비동기로 동작하는 코드를 포함한 함수를 말한다. 비동기 함수를 호출하면 함수 내부의 비동기로 동작하는 코드가 완료되지 않았다 해도 기다리지 않고 즉시 종료된다. 즉, 비동기 함수 내부의 비동기로 동작하는 코드는 비동기 함수가 종료된 이후에 완료된다. 따라서 비동기 함수 내부의 비동기로 동작하는 코드에서 처리 결과를 외부로 반환하거나 상위 스코프의 변수에 할당하면 기대한 대로 동작하지 않는다. Promise..

공통된 특성을 기반으로 클래스, 상속으로 과제를 완수하기✨✨ class Grub { constructor() { this.age = 0; this.color = "pink"; this.food = "jelly"; } eat() { return "Mmmmmmmmm jelly"; } } class Bee extends Grub { constructor() { super(); this.age = 5; this.color = "yellow"; this.job = "Keep on growing"; } } class HoneyMakerBee extends Bee { constructor() { super(); this.age = 10; this.job = "make honey"; this.honeyPot = 0; ..

객체지향 프로그래밍에서 추상화(abstraction) 는 실체의 특징이나 성질을 나타내는 속성(sttribute / property) 을 프로그램에 필요한 속성만 간추려 내어 표현하는 것 이다. 이러한 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라 한다. 주제랑 다른 글 아닌가요? 라고 생각할 수 있지만 프로토타입을 제대로 알기 위하서는 알아야 하는 내용이다. 원(Circle) 이라는 개념을 객체로 만들어보자. 원에는 반지름 속성이 있다. 이 반지름을 통해 원의 지름, 둘레, 넓이를 구할 수 있다. 이때 반지름은 원의 상태를 나타내는 데이터이며 원의 지름, 둘레, 넓이를 구하는 것은 동작이다. 이처럼 객체지향 프로그래밍은 객체의 상태(state) 를 나타내는 데이터와 상태 ..

클래스 클래스와 생성자 함수는 프로토타입 기반의 인스턴스를 생성하지만 동일하게 동작하지는 않는다. 클래스가 더 엄격하며 생성자 함수에서는 제공하지 않는 기능도 제공한다. 클래스를 new 연산자 없이 호출하면 에러 발생. 생성자 함수를 new 연산자 없이 호출하면 일반 함수로서 호출. 클래스는 상속을 지원하는 extends와 super 키워드를 제공한다. 생성자 함수는 지원하지 않는다. 클래스는 호이스팅이 발생하지 않는 것처럼 동작한다. 하지만 함수 선언문으로 정의된 생성자 함수는 함수 호이스팅이, 함수표현식으로 정의한 생성자 함수는 변수 호이스팅이 발생한다. 클래스 내의 모든 코드에는 암묵적으로 strict mode가 지정되어 실행되며 해제할 수 없다. 생성자 함수는 암묵적으로 strict mode가 지..

객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체 지향 프로그래밍의 장단점 -장점 코드 재사용이 용이 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다. 유지 보수가 쉬움 절차 지향 프로그래밍은 코드를 수정할 때 일일이 찾아 수정해야하는 반면, 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다. 대형 프로젝트에 적합 클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러 명, 여러 회사에서 프로젝트를 개발할 때 업..

JavaScript 대표적인 일급 객체 중 하나가 함수이다. JavaScript에서 함수는 아래와 같이 특별하게 취급된다. 변수에 할당(assignment)할 수 있다. 다른 함수의 전달인자(argument)로 전달될 수 있다. 다른 함수의 결과로써 리턴될 수 있다. 함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성 값으로 저장할 수 있다. 함수를 데이터(string, number, boolean, array, object)처럼 다룰 수 있습니다. '함수를 리턴하는 함수'와 '함수를 전달인자로 받는 함수' 모두, 고차 함수로 사용한다. 배열 메서드 .filter(), .map(), .reduce() arr.filter(callback(element[, index[, array]])..