it 책/코어 자바스크립트 6

7장 클래스

Array를 생성자 함수 new와 함께 호출하면 인스턴스가 생성됩니다. 이때 Array를 일종의 클래스라고 하면, Array의 prototype 객체 내부 요소들이 인스턴스에 상속된다고 볼 수 있습니다. 엄밀히 말하면 프로토 타입 체이닝에 의한 참조지만 인스턴스에 상속되는지 여부에 따라 스태틱 멤버와 인스턴스 멤버로 나뉩니다. 다른 클래스 기반 언어와 달리 자바스크립트에서는 인스턴스에서도 직접 메서드를 정의할 수 있기 때문에 ‘인스턴스 메서드’라는 명칭보다는 프로토 타입 메서드라고 부르는 편이 좋습니다. const Rectangle = function(width, height) { this.width = width this.height = height } Rectangle.prototype.getArea..

6장 프로토 타입

어떤 생성자 함수를 new연산자와 함께 출력하면 Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스가 생성되는데 이 인스턴스에는 __proto__라는 Constructor의 prototype프로퍼티를 참조하는 프로퍼티가 자동으로 부여됩니다. const Person = function(name){ this._name = name } Person.prototype.getName = function(){ return this._name } const suzi = new Person('suzi') suzi.__proto__._name = 'seung bin' suzi.__proto__.getName() // 'seung bin' suzi.getName() // suzi __proto__는 생략 가능..

5장 클로저

클로저 : 어떤 함수에서 선언한 변수를 참조하는 내부함수를 외부로 전달항 경우 함수의 실행 컨텍스트가 종료된 후에도 해당 변수가 사라지지 않은 현상 const outer = function(){ let a = 1 let inner = function(){ return ++a } return inner } const outer2 = outer() console.log(outer2) // 2 console.log(outer2) // 3 그 이유는 가비지 컬렉터의 동작 방식 때문입니다. 가비지 컬렉터는 참조하는 변수가 하나라도 있다면 그 값은 수집 대상에 포함시키지 않습니다. 클로저와 메모리 관리 클로저는 어떤 필요에 의해 의도적으로 함수의 지역변수를 메모리를 소모하도록 함으로써 발생합니다. 즉 그 필요성이 ..

3장 this 정리

정리 다음 규칙은 명시적 this 바인딩이 없는 한 성립 전역 공간에서의 this는 전역 객체(브라우저에서는 window, Node.js에서는 global)를 참조합니다. 어떤 함수를 메서드로서 호출한 경우 this는 메서드 호출 주체를 참조합니다. 어떤 함수를 함수로서 호출한 경우 this는 전역객체를 참조합니다. 메서드의 내부함수에서도 같습니다. var obj1 = { outer: function(){ console.log(this) // (1) var innerFunc = function(){ console.log(this) // (2) (3) } innerFunc() var obj2 = { innerMethod: innerFunc } obj2.innerMethod() } } obj1.outer()..

2장 실행 컨텍스트

실행할 코드에 제공할 환경 정보를 모아놓은 객체 실행 컨텍스트 객체는 활성화되는 시점에 VariableEnvironment, LexicalEnvironement, ThisBinding의 정보를 가집니다. VariableEnvironment와 LexicalEnvironement는 동일한 내용으로 구성이 되지만 LexicalEnvironement는 함수 실행 도중에 변경되는 사항이 즉시 반영, VariableEnvironment는 초기 값을 유지 LexicalEnvironement는 매개 변수명, 변수의 식별자, 선언한 함수의 함수명 등을 수집하는 environmentRecord와 직전 컨테스트의 LexicalEnvironement 정보를 참조하는 outerEnvironmentReference 호이스팅은 e..

1장 정리

자바스크립트 데이터 타입 : 기본형(불변 값), 참조형(가변 값) 변수: 변경 가능한 데이터가 담길 공간 식별자: 그 변수의 이름 변수를 선언하면 메모리의 빈 공간에 식별자를 저장하고 그 공간에 undefined를 할당 변수 할당 별도의 메모리 공간에 데이터를 저장하고 그 메모리 주소를 변수의 값 영역에 할당 참조형 데이터를 할당하고자 할 경우 힙영역에 데이터를 저장하고 그 힙영역의 메모리 주소를 변수가 선언된 메모리에 저장 그 메모리 주소를 식별자와 연결합니다. 이렇게 할당 과정이 복잡한 이유는 더 자유롭게 메모리를 관리하기 위함입니다. 참조형 데이터를 불변값으로 사용하기 위해서는 내부 프로퍼티를 일일이 복사하면 됩니다.(깊은 복사) '없음'을 나타내는 undefined와 null이 있는데 자바스크립트..