본문 바로가기

코어자바스크립트7

07. 코어 자바스크립트_클래스 자바스크립트는 프로토타입 기반 언어라서 클래스 및 상속 개념은 존재하지 않지만 프로토타입을 기반으로 클래스와 비슷하게 동작하게끔 하는 다양한 기법들이 도입돼 왔다. 클래스는 어떤 사물의 공통 속성을 모아 정의한 추상적인 개념이고, 인스턴스는 클래스의 속성을 지니는 구체적인 사례이다. 상위 클래스(superclass)의 조건을 충족하면서 더욱 구체적인 조건이 추가된 것을 하위 클래스(subclass)라고 한다. 클래스의 prototype 내부에 정의된 메서드를 프로토타입 메서드라고 하며, 이들은 인스턴스가 마치 자신의 것처럼 호출할 수 있다. 클래스 상속을 흉내 낼 수 있는 방법은 다음과 같다. 첫째, subClass, prototype에 SuperClass의 인스턴스를 할당한 다음 프로퍼티를 모두 삭제하.. 2022. 1. 4.
06. 코어자바스크립트_프로토타입 어떤 생성자 함수를 new 연산자와 함께 호출하면 Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스가 생성되는데, 이 인스턴스에는 __proto__라는, Constructor의 prototype 프로퍼티를 참조하는 프로퍼티가 자동으로 부여된다. __proto__는 생략 가능한 속성이라서, 인스턴스는 Constructor.prototype의 메서드를 마치 자신의 메서드인 것처럼 호출할 수 있다. Constructor.prototype에는 constructor라는 프로퍼티가 잇는데, 이는 다시 생성자 함수 자신을 가리킨다. 이 프로퍼티는 인스턴스가 자신의 생성자 함수가 무엇인지를 알고자 할 때 필요한 수단이다. 직각삼각형의 대각선 방향, 즉 __proto__방향을 게속 찾아가면 최종적으로는 O.. 2022. 1. 4.
05. 코어 자바스크립트_클로저 클로저란 어떤 함수에서 선언한 변수를 참조하는 내부함수를 외부로 전달할 경우, 함수의 실행 컨텍스트가 종료된 후에도 해당 변수가 사라지지 않는 현상이다. 내부함수를 외부로 전달하는 방법에는 함수를 return하는 경우뿐 아니라 콜백으로 전달하는 경우도 포함된다. 클로저는 그 본질이 메모리를 계속 차지하는 개념이므로 더는 사용하지 않게 된 클로저에 대해서는 메모리를 차지하지 않도록 관리해줄 필요가 있다. 2022. 1. 4.
04. 코어 자바스크립트_콜백 함수 1. 콜백 함수는 다른코드에 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수이다. 2. 제어권을 넘겨받은 코드는 다음과 같은 제어권을 가진다. a) 콜백 함수를 호출하는 시점을 스스로 판단해서 실행한다. b) 콜백 함수를 호출할 때 인자로 넘겨줄 값들 및 그 순서가 정해져 있다. 이 순서를 따르지 않고 코드를 작성하면 엉뚱한 결과를 얻게 된다. c) 콜백 함수 내의 this가 무엇을 바라보도록 할지가 정해져 있는 경우도 있다. 정하지 않은 경우에는 전역객체를 바라본다. 사용자가 임의로 this를 바꾸고 싶을 경우 bind 메서드를 활용하면 된다. 3. 어떤 함수에 인자로 메서드를 전달하더라도 이는 결국 함수로서 실행된다. 4. 비동기 제어를 위해 콜백 함수를 사용하다 보면 콜백 지옥에 빠지기 쉽습니다... 2022. 1. 3.