Javascript

프로미스 도대체 왜쓸까요? 가장 큰 이유는, 콜백헬을 다루기 위해서..! 그리고 비동기코드를 순차적으로 실행하기 위해서!! 그..그것이.. 프로미스니까..! ● 비동기 처리를 위한 콜백 패턴의 단점 비동기 함수는 '언제 실행될지 모르는 것' 이라는 점을 가지고 있다. 언제 실행될지 모르니, 비동기 함수 바깥에 있는 변수를 수정할 수도 없고, 비동기함수가 내뱉는 반환값도 가져올 수가 없다. let a = 1; // 0초뒤 a = 2로 선언한다. setTimeout(()=> {a = 2;}, 0) console.log(a) // 1 원래 예상하는 대로라면, 2가 출력되야하지만, 1이 출력된다. 따라서 비동기 함수는 언제 실행될지 정확히 예측할 수 없다는 것이다. 그렇다면 어떻게 하면 a = 2를 출력할 수 ..
· Javascript
● 콜백 함수는 늘 비동기일까? function printImmediately(print) { print(); } function printDelay(print, delay) { setTimeout(print, delay); } printDelay(() => { console.log("asyncCallback"); }, 2000); printImmediately(() => { console.log("daeun"); }); printImmediately 함수는 콜백함수를 받고, 그 콜백함수를 바로 실행한다. printDelay함수는 콜백함수와 delay할 함수를 받고, setTimeout로 콜백함수를 실행한다. 결과는 asyncCallback, daeun 순으로 출력된다. 즉, 콜백함수는 동기콜백함수와 비..
● this 키워드 만약 메서드가 있다면, 메서드가 속한 객체의 프로퍼티를 가져오고 싶을 때, 내부에서 참조할 방도가 업다.. 따라서 생기게 됐다. 약간의 손가락같은 포인터 개념이라고 하면 좋을 것 같다. 자바스크립트 내에서 this는 '누가 나를 불렀느냐'를 뜻한다고 한다. this는 즉, 선언이 아닌 호출에 따라 달라진다는게 가장 중요하다. 그럼 각 상황별로 this가 어디에 바인딩되는지 알아보자. 함수 호출 방식 this 바인딩 일반 함수 호출 전역객체 메서드 호출 메서드를 호출한 객체 생성자 함수 호출 생성자 함수가 생성할 인스턴스 Function.prototype.apply/call/bind에 의한 간접 호출 메서드의 첫번째 인수로 전달한 객체 전역에서 this를 사용한다면, 전역을 가르키게 ..
· Javascript
__proto__는 사실 더 이상 권장되지 않는 기능이다. 최근 관련된 웹 표준에서 사라졌을 수 있으며, 혹은 사라지는 중일 수 있다. 물론, 호환성을 위해 아직 없애지 않는 브라우저가 대부분이긴 할 것이다. __proto__를 사용하기보다는 가능하다면 존재하는 코드를 업데이트하여 __proto__의 사용을 자제하는 것이 좋겠다. ● 내가 가졌던 의문점 왜 없어졌을까? getter, setter함수라서? setter로 prototype을 수정할 수 있기 때문일까? 역시 안정성의 문제? ● 모던 프로토타입은 왜 생겨난것인가? 모던 프로토타입이란 ES6(ECMAScript 2015)에서 도입된 프로토타입 기반 객체지향 프로그래밍 패턴이다. 아래는 모던한 프로토타입 메소드이다. ▶︎ Object.create..
● 클래스 클래스는 생성자 함수와 마찬가지로 인스턴스(기염둥이객체)를 생성할 수 있다. 생성자 함수가지고도 충분히 인스턴스를 만들어낼 수 있는데, 왜 클래스라는 것이 생기게 되었을까? 사실상 프로토타입기반 객체지향 언어인 자바스크립트는 클래스가 필요 없는 언어이다. 그렇지만 클래스가 생긴 이유는 아래와 같다. 자바, C#같은 클래스 기반 언어에 익숙한 언어들을 위해 편리함을 제공해줌 내 속마음 : 않의.. 그럼 프로토타입기반언어 그냥 무시하는거예욧? 왜 편리썽을 줍니까? 구냥 프로토타입기반 생성자 함수만씁시다! 자바스크립트만의 파이만 만들어요!! 절이 실으면 중이떠나라!! 하지만, 이런 편리성을 제공함으로서 협업도 넓어지고, 코드를 이해하는 폭도 넓어지고 사실상 이점이 많이 때문에 없는것 보단 있으면 좋..
· Javascript
● 절차지향 프로그래밍 객체지향 프로그래밍이 있기 전에, 절차지향 프로그래밍이 있었다. 초기의 C, 포트란 같은 언어들은 객체 지향의 개념이 없는 절차적 언어였다. 논리적 구조가 절차적으로 진행되었다. 사진을 보면 고객의 절차적인 행동을 기준으로 논리구조가 설계되고 있는 것을 볼 수 있다. 그저 행동의 순서만 나열되었고, 그에 따른 시행이 되는 것이다. ● 객체지향 프로그래밍 절차지향 프로그래밍이 지나가고, 객체지향 프로그래밍이라는 패러다임(=방식)이 등장하게 되면서 단순히 별개의 변수, 함수를 순차적으로 작동하는 것을 넘어 데이터 접근과 데이터 처리 과정에 대한 모형을 만들어내는 방식을 고안해냈다. 따라서 데이터와 기능을 별개로 취급하지 않고 한 번에 묶어서 처리할 수 있게 되었다. 객체지향프로그래밍이..
김코린이
'Javascript' 카테고리의 글 목록 (4 Page)