7-1 클래스와 인스턴스의 개념 이해 클래스는 하위로 갈 수록 상위 클래스의 속성을 상속하면서 더 구체적인 요건이 추가 또는 변경된다. 하위 클래스가 아무리 구체화되더라도 결국 추상적인 개념 인스턴스: 클래스의 속성을 지니는 실존하는 개체 클래스에 속한 개체는 그 클래스의 조건을 모두 만족하므로 그 클래스의 구체적인 예시 프로그래밍 언어상에서 한 개체는 하나의 클래스만을 바탕으로 만들어짐 클래스가 먼저 정의되어야만 공통적인 요소를 지니는 개체를 생성할 수 있음 사용에 따라 추상적일수도, 구체적일 수도 7-2 자바스크립트의 클래스 Js는 프로토타입 기반이지만, 클래스의 관점에서 접근하면 비슷하게 해석할 수 있다. 인스턴스가 참조하는지 여부에 따라 스태틱 멤버와 인스턴스 멤버로 나뉨 클래스 입장에서 사용 대..
프로토타입 자바스크립트는 프로토타입(prototype)기반 언어 클래스 기반 언어 : ‘상속’을 사용 프로토타입 기반 언어: 어떤 객체를 원형으로 삼고 이를 복제(참조)하여 상속과 비슷한 효과 유명한 프로그래밍 언어의 상당수가 클래스 기반(프로토타입은 꽤 독특한 개념) 6-1 프로토타입의 개념 이해 6-1-1 constructor, prototype, instance 프로토타입 도식의 흐름 var instance = new constructor(); 어떤 생성자 함수(constructor)를 new 연산자와 함께 호출하면 Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스(instance)가 생성됨 이때 instance에는 __proto__라는 프로퍼티가 자동으로 부여 이 프로퍼티는 Cons..
5-1 클로저의 의미 및 원리 이해 클로저는 여러 함수형 프로그래밍 언어에서 등장하는 보편적인 특성이다. JS 고유의 개념이 아니기 때문에 다양한 문헌에서 제각각 클로저를 다르게 정의 또는 설명하고 있다. 다양한 책에서 클로저를 한문장으로 설명하는 부분들 자신을 내포하는 함수의 컨테스트에 접근할 수 있는 함수 - 함수가 특정 스코프에 접근할 수 있도록 의도적으로 그 스코프에서 정의하는 것 - 함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출할 수 있는 함수 - 이미 생명 주기상 끝난 외부 함수의 변수를 참조하는 함수 - 자유변수가 있는 함수와 자유변수를 알 수 있는 환경의 결합 - 로컬 변수를 참조하고 있는 함수 내의 함수 - 자신이 생성될 때의 스코프에서 알 수 있었..
4-1 콜백 함수란? 콜백 함수: 다른 코드의 인자로 넘겨주는 함수 콜백 함수를 넘겨받은 코드는 필요에 따라 적절한 시점에 실행할 것 콜백 함수는 제어권과 관련이 있다. 다른 코드에게 인자로 넘겨줌으로써 제어권도 함께 위임한 함수 4-2 제어권 4-2-1 호출 시점 콜백 함수의 제어권을 넘겨받은 코드는 콜백 함수 호출 시점에 대한 제어권을 가짐 4-2-2 인자 map의 구조: Array.prototype.map(callback [, thisArg]) 첫 번째 인자로 callback함수, 생략가능한 두번째 인자로 콜백 함수 내부에서 this로 인식할 대상을 측정 가능. thisArg 생략 시 전역객체가 바인딩 메서드의 대상이 되는 배열의 모든 요소들을 처음부터 끝까지 하나씩 꺼내어 콜백 함수를 반복 호출 ..
this 다른 대부분의 객체지향 언어에서 this는 클래스로 생성한 인스턴스 객체를 의미 하지만 Js에서 this는 어디서든 사용할 수있음 함수와 객체의 구분이 느슨한 JS에서 this는 실질적으로 이 둘을 구분하는 거의 유일한 기능 3-1 상황에 따라 달라지는 this this는 기본적으로 실행 컨텍스트가 생성될 때 함께 결정 this는 함수를 호출할 때 결정된다 함수를 어떤 방식으로 호출하느냐에 따라 값이 달라짐 3-1-1 전역 공간에서의 this 전역 공간에서 this는 전역 객체를 가리킴(개념상 전역 컨텍스트를 생성하는 주체가 전역객체임) 전역 객체는 js 런타임 환경에 따라 다른 이름과 정보를 가지고 있음 브라우저에서 window, Node.js에서 global 전역 공간에서만 발생하는 특이한 ..
실행 컨텍스트 실행 컨텍스트: 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 JS의 동적언어로서의 성격을 가장 잘 파악할 수 있는 개념 2-1 실행 컨텍스트란? 스택: 출입구가 하나뿐인 깊은 우물 같은 데이터 구조 a-b-c-d로 넣었다면 d-c-b-a로 꺼내야함 스택이 넘치면 에러를 던짐 큐: 양쪽 모두 열려있는 파이프 보통 한쪽은 출력만 한쪽은 입력만 담당 a-b-c-d로 넣었다면 a-b-c-d로 꺼냄 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성(전체 코드의 환경과 순서를 보장) → 콜 스택에 쌓아올림 → 가장 위에 쌓여있는 컨텍스트와 관련있는 코드들을 실행하는 식 동일한 환경? 하나의 실행 컨텍스트를 구성할 수 있는 방법 전역공간, eval()함수, 함수 등..