전체 글
TIL - 20220805
오늘은 모던 JavaScript 튜토리얼에서 프라미스에 대해 공부했다. 작성한 질문은 다음과 같다. 프라미스란 실행자와 소비자 사이를 연결하는 특별한 자바스크립트 객체이다. 프라미스는 시간의 경과를 신경 쓰지 않으며 실행자가 끝날 때, 소비자가 그 결과를 사용할 수 있도록 도와준다. 실행자란 new Promise에 전달되는 함수이며 new Promise가 만들어질 때, 자동으로 실행된다. 실행자의 인수 resolve, reject는 자바스크립트에서 제공하는 콜백 함수이다. resolve와 reject를 작성하지 않고 실행자만 작성해도 되지만 실행자에서 결과를 시간 소요 상관없이 상황에 따라 인수로 콜백 중 하나를 반드시 호출해야 한다. resolve(value): 일이 문제없이 끝난 경우, 그 결과를 나..
TIL - 20220804
오늘은 모던 JavaScript 튜토리얼에서 콜백에 대해 공부했다. 작성한 질문은 다음과 같다. 콜백 기반 비동기 프로그래밍이란 무언가를 비동기적으로 처리해야 하는 함수가 함수 내 동작이 모두 처리된 후에 실행되어야 하는 함수일 경우 콜백을 인수로 반드시 제공해야 하는 프로그래밍이다. 스크립트가 여러 개 있는 경우 순차적으로 불러오려면 콜백 함수 안에 콜백 함수를 또 한 번 호출하면 된다. 중첩 콜백을 만들면, 바깥쪽 콜백 함수가 완료된 후 안쪽 콜백 함수가 실행되기 때문이다. 오류 우선 콜백은 다음 관례를 따른다. callback의 첫 번째 인수는 에러를 위해 남겨둔다. 에러가 발생하면 해당 인수를 이용해 callback(err)이 호출된다. 두 번째 인수(필요한 경우 추가 가능)는 에러가 발생하지 않..
TIL - 20220803
오늘은 모던 JavaScript 튜토리얼에서 커스텀 에러와 에러 확장에 대해 공부했다. 작성한 질문은 다음과 같다. throw 인수엔 제약이 없기 때문에 커스텀 에러 클래스는 반드시 Error를 상속받지 않아도 된다. 하지만, Error를 상속받아 커스텀 에러 클래스를 만들게 되면 obj instanceof Error를 이용하여 에러가 어떤 에러에 해당하는지 구분 지을 수 있게 된다.
TIL - 20220802
오늘은 모던 JavaScript 튜토리얼에서 'try..catch'와 에러 핸들링(https://ko.javascript.info/try-catch)에 대해 공부했다. 작성한 질문은 다음과 같다. 에러가 발생하면 스크립트가 즉시 중단되고(죽고), 콘솔 창에 에러가 출력된다. 이를 방지하고 에러를 잡아 더 합당한 무언가를 하는 문법이 try...catch 문법이다. try...catch의 동작 알고리즘은 다음과 같다. try {...} 안의 코드가 실행된다. 에러가 없다면, try 안의 마지막 줄까지 실행되고 catch 블록은 실행하지 않은 채 넘어간다. 에러가 있다면, 실행 중인 try 코드가 중단되고 catch 블록으로 실행 흐름이 넘어간다. try...catch는 런타임에 동기로 동작한다. 런타임에만..
TIL - 20220801
오늘은 모던 JavaScript 튜토리얼에서 믹스인(https://ko.javascript.info/mixins)에 대해 공부했다. 작성한 질문은 다음과 같다. 믹스인이란 다른 클래스를 상속받을 필요 없이 다른 클래스에 구현되어 있는 메서드를 담고 있는 클래스이고, 이벤트 핸들링 등의 행동을 추가하여 클래스를 확장하는 용도로 사용할 수 있다. 자바스크립트에서 믹스인을 구현하는 가장 쉬운 방법은 유용한 메서드가 여러 개 담긴 객체 하나를 만드는 것이다. 이런 식으로 진행하면 다수의 메서드를 원하는 클래스의 프로토타입에 쉽게 병합할 수 있다. 믹스인을 끝으로 모던 JavaScript 튜토리얼의 클래스 챕터가 모두 끝나게 됐다. 클래스에 대해 자세하게 공부할 수 있어서 좋았지만 더 좋았던 부분은 객체 지향 프..
TIL - 20220731
오늘은 모던 JavaScript 튜토리얼에서 'instanceof'로 클래스 확인하기에 대해 공부했다. 작성한 질문은 다음과 같다. 어떤 객체가 특정 클래스에 속하는지 아닌지 확인하기 위한 연산자로 instanceof가 있다. 이 instanceof는 클래스에 속하거나 클래스를 상속받는 클래스에 속한다면 true가 반환된다. class Animal {} class Rabbit extends Animal {} let rabbit = new Rabbit(); alert(rabbit instanceof Animal); // true 정적 메서드를 통해 인스턴스 여부나 상속 여부를 확인하는 방법은 Symbol.hasInstance를 통해 구현할 수 있다. class Animal { static [Symbol.h..
TIL - 20220730
오늘은 모던 JavaScript 튜토리얼에서 내장 클래스 확장하기(https://ko.javascript.info/extend-natives)에 대해 공부했다. 작성한 질문은 다음과 같다. 코드와 함께 살펴보자. class PowerArray extends Array { isEmpty() { return this.length === 0; } } let arr = new PowerArray(1, 2, 5, 10, 50); alert(arr.isEmpty()); // false let filteredArr = arr.filter(item => item >= 10); alert(filteredArr); // 10, 50 alert(filteredArr.isEmpty()); // false 배열, 맵 같은 내장..
TIL - 20220729
오늘은 모던 JavaScript 튜토리얼에서 private, protected 프로퍼티와 메서드(https://ko.javascript.info/private-protected-properties-methods)에 대해 공부했다. 작성한 질문은 다음과 같다. 내부 인터페이스와 외부 인터페이스는 다음과 같다. 내부 인터페이스: 동일한 클래스 내 다른 메서드에선 접근이 가능하지만, 외부에서 접근이 불가능한 프로퍼티와 메서드를 내부 인터페이스라고 한다. 외부 인터페이스: 클래스 밖에서도 접근이 가능한 프로퍼티와 메서드를 외부 인터페이스라고 한다. public과 private은 다음과 같다. public: 어디서든 접근 가능하며 외부 인터페이스가 public에 해당한다. 별다른 추가 설정을 취하지 않으면 전부 ..