모던 자바스크립트 Deep Dive(4)
-
[모던 자바스크립트 Deep Dive] 22장. this
1. this 키워드 - this 는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수. this 를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. - this 는 자바스크립트 엔진에 의해 암묵적으로 생성. 코드 어디서든 참조 가능. - this 가 가리키는 값, this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. // this 는 어디서든지 참조 가능하다. console.log(this); // window function square(number) { console.log(this); // window return number * number; }; square(2); const person = { name : 'Lee', ..
2023.03.14 -
[모던 자바스크립트 Deep Dive] 19장. 프로토타입 - 2
8. 오버라이딩과 프로퍼티 섀도잉 1) 오버라이딩 : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의하여 사용하는 방식 2) 오버로딩 : 함수의 이름은 동일하지만 매겨변수의 타입 또는 개수가 다른 메서드를 구현하고 매겨변수에 의해 메서드를 구별하여 호출하는 방식. 자바스크립트는 오버로딩을 지원하지 않지만 arguments 객체를 사용하여 구현할 수는 있다. 3) 프로퍼티 섀도잉 : 상속 관계에 의해 프로퍼티가 가려지는 현상. 4) 인스턴스 메서드를 삭제하더라도 프로토타입 메서드는 삭제되지 않는다. 프로토타입 프로퍼티를 변경 또는 삭제하기 위해서는 프로토타입에 직접 접근하여 변경하여야 한다. const Person = ( function() { function Person(name){ this.n..
2023.03.13 -
[모던 자바스크립트 Deep Dive] 24장. 클로저(Closure)
1. 렉시컬 스코프 (정적 스코프) - 자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정. - 함수의 상위 스코프를 결정한다 = 렉시컬 환경의 외부 렉시컬 환경에 대한 참조에 저장할 참조값을 결정한다. * 스코프 체인 : 실행 컨텍스트의 렉시컬 환경은 자신의 외부 렉시컬 환경에 대한 참조(Outer lexcial environment reference)를 통해 상위 렉시컬 환경과 연결되는 것. 렉시컬 환경의 "외부 렉시컬 환경에 대한 참조"에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정된다. 2. 함수 객체의 내부 슬롯 [[Environment]] - 함수는 자신의 내부 슬롯 [[..
2023.03.08 -
[모던 자바스크립트 Deep Dive] 23장. 실행 컨텍스트
1) 소스코드의 타입 - 소스 코드를 구분하는 이유는 소스 코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문! (1) 전역 코드 (Global code) : 전역에 존재하는 소스 코드 (2) 함수 코드 (Function code) : 함수 내부에 존재하는 소스 코드 (3) eval 코드 (Eval Code) : 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스 코드 (4) 모듈 코드 (Module Code) : 모듈 내부에 존재하는 소스코드. 2) 소스코드의 평가와 실행 소스코드의 평가와 소스코드의 실행 과정으로 나누어 처리. 아래의 소스 코드가 실행된다고 생각. var x; x = 1; (1) 소스 코드 평가 과정 ㄱ) 변수 선언문 var x;를 실행. 이때 ..
2023.03.07