본문 바로가기

javascript7

[javascript] 클래스 자바스크립트는 프로토타입 기반 언어라서 '상속' 개념이 존재하지 않습니다. 이는 클래스 기반의 다른 언어에 익숙한 많은 개발자들을 혼란스럽게 했고, 따라서 클래스와 비슷하게 동작하게끔 흉내 내는 여러 기법들이 탄생했으며 이들 중 몇가지는 널리 알려져 있습니다. 이러한 니즈에 따라 결국 ES6에는 클래스 뭄법이 추가됐습니다. 다만 ES6의 클래스에서도 일정 부분은 프로토타입을 활용하고 있기 때문에, ES5체제 하에서 클래스를 흉내내기 위한 구현 방식을 학습한 것은 여전히 큰 의미가 있습니다. 클래스와 인스턴스의 개념 이해 객체지향 프로그래밍에서 거의 반드시 등장하는 제1요소인 클래스라는 단어의 의미는 일반적으로 쓰이는 의미와 거의 흡사합니다. 영어사전에서 class는 '계급, 집단, 집합' 등으로 번역합니.. 2020. 5. 11.
[javascript] 클로저 클로저의 의미 및 원리 이해 클로저(closure)는 여러 함수형 프로그래밍 언어에서 등장하는 보편적인 특성입니다. 자바스크립트 고유의 개념이 아니라 ECMAScript 명세에서도 클로저의 정의를 다루지 않고 있고 그것때문이라고 할 수는 없지만 어쩃든 다양한 문헌에서 제각각 클로저를 다르게 정의 또는 설명하고 있습니다. 다양한 서적에서 클로저를 한 문장으로 요약해서 설명하는 부분들을 소개하면 다음과 같습니다. 자신을 내포하는 함수의 컨테스트에 접근할 수 있는 함수 함수가 특정 스코프에 접근할 수 있도록 의도적으로 그 스코프에서 정의하는 것 함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출하 수 있는 함수 이미 생명 주기상 끝난 회부 함수를 참조하는 함수 자유변수가 있는 함수와 자유변수를 알 수 .. 2020. 5. 8.
[javascript] this 자바스크립트에서 가장 혼란스러운 개념을 고르라고 하면 많은 사람들이 망설임 없이 this를 꼽을 것입니다. 다른 대부분의 객체지향 언어에서 this는 클래스로 생성한 인스턴스 객체를 의미합니다. 자바스크립트에서의 this는 어디서든 사용할 수 있고 상황에 따라 this가 바라보는 대상이 달라지는데 어떤 이유로 그렇게 되는지를 파악하기 힘든 경우도 있고 예상과 다르게 엉뚱한 대상을 바라보는 경우도 있습니다. 함수와 객체(메서드)의 구분이 느슨한 자바스크립트에서 this는 실질적으로 이 둘을 구분하는 거의 유일한 기능입니다. 이번 장에서는 상황별로 this가 어떻게 달라지는지, 왜 그렇게 되는지, 예상과 다른 대상을 바라보고 있을 경우 그 원인을 효과적으로 추적하는 방법 등을 살펴보겠습니다.전역 공간에서의 .. 2020. 5. 4.
[javascript] 실행 컨텍스트 실행 컨텍스는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로 자바 스크립트의 동적 언어로서의 성격을 가장 잘 파악할 수 있는 개념입니다. 자바스크립트는 어떤 실행 컨텍스트가 활성화되는 시점에 선언된 변수를 위로 끌어올리고(호이스팅), 외부 환경 정보를 구성하고, this 값을 설정하는 등의 동작을 수행하는데, 이로 인해 다른 언어에서는 발견할 수 없는 특이상 현상들이 발생합니다. 실행 컨텍스트란 ? 앞서 '실행 컨텍스트를 실행항 코드에 제공할 환경 정보들을 모아놓은 객체'라고 했습니다. 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이를 콜 스택에 쌓아 올렸다가 가장 위에 있는 컨텍스트와 관련 있는 코드들을 실행하는 식으로 전체 코드의 환경 순서를 보장합니다... 2020. 5. 2.