📖 모던 자바스크립트 교재) 23장. 실행컨텍스트 실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 01. 소스코드의 타입 다음 4가지 타입의 소스코드는 실행 컨텍스트를 생성한다. 소스코드의 타입 설명 전역 코드 전역에 존재하는 소스코드 / 전역에 정의된 함수, 클래스 등의 내부 코드는 포함 X 함수 코드 함수 내부에 존재하는 소스코드 / 함수 내부에 중첩된 함수, 클래스 등의 내부 코드 포함 X eval 코드 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드 모듈 코드 모듈 내부에 존재하는 소스코드 / 모듈 내부의 함수, 클래스 등의 내부 코드 포함 X ➡️ 소스코드를 4가지 타입으로 구분하는 이유 : 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 ..
📖 모던 자바스크립트 교재) 22장. this 01. this 키워드 객체 : 상태(state)를 나타내는 프로퍼티와 동작(behavior)를 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조다. 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. ➡️ 이때 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 하는데, 이때 this를 사용한다. const circle = { // 프로퍼티: 객체 고유의 상태 데이터 radius: 5, // 메서드: 상태 데이터를 참조하고 조작하는 동작 getDiameter() { // 이 메서드가 자신이 속한 객체의 프로퍼티나 다른 메서드를 참조하려면 // 자신이 속한 객체인 circle을 참조할 수 있어..
📖 모던 자바스크립트 교재) 21장. 빌트인 객체 01. 자바스크립트 객체의 분류 * 3개의 객체로 분류 - 표준 빌트인 객체 : ECMAScript 사양에 정의된 객체. 실행환경에 관게없이 언제나 사용 가능 - 호스트 객체 : 실행 환경 (브라우저 환경 또는 Node.js 환경)에서 추가로 제공하는 객체 - 사용자 정의 객체 : 기본 제공되는 객체가 아닌, 사용자가 직접 정의한 객체 02. 표준 빌트인 객체 Object, String, Number, Date, Math, RegExp, Array, Map, Set, Promise, Reflect, Proxy, JSON, Error 등 40여 개의 표준 빌트인 객체 생성자 함수 객체 : 프로토타입 메서드, 정적 메서드 제공 생성자 함수 객체가 아닌 객체(..
📖 모던 자바스크립트 교재) 20장. strict mode 01. strict mode란? ES5부터 추가된 것으로, 자바스크립트 언어의 문법을 좀 더 엄격하게 적용하여, 문제를 일으킬 수 있는 코드에 대해 명시적 에러를 발생시킨다. 02. strict mode의 적용 strict mode를 적용하려면,전역의 선두/함수 몸체의 선두에 'use strict';를 추가한다. 03. 전역에 strict mode를 적용하는 것은 피하자 전역에 적용한 strict mode는 스크립트 단위로 적용 ➡️ 해당 스크립트에 한정되어 적용 💥 strict mode 스크립트와 non-strict mode 스크립트를 혼용할 수 있는 오류를 발생시킨다. 04. 함수 단위로 strict mode를 적용하는 것도 피하자 즉시 실행..
📖 모던 자바스크립트 교재) 19장. 프로토타입 07. 프로토타입 체인 💡 프로토타입 체인이란? 객체의 프로퍼티(메서드 포함)에 접근하려고 할 때, 해당 객체에 접근하려는 프로퍼티가 없다면 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색하는 것을 말한다. 그렇게 순차적으로 계속 검색하다보면 .. 결국 프로토타입 체인의 종점에 다다르게 된다. 그때의 프로토타입은 Object.prototype이다. 💡 프로토타입 체인과 스코프 체인은 서로 협력하여 프로퍼티와 식별자를 검색하는 데 사용된다. 프로토타입 체인 : 상속과 프로퍼티 검색을 위한 메커니즘 스코프 체인 : 식별자 검색을 위한 메커니즘 08. 오버라이딩과 프로퍼티 섀도잉 오버라이딩이란? 상위 클래스가 가지고 있는 메서드를 하위 클래스가 ..
📖 모던 자바스크립트 교재) 19장. 프로토타입 01. 객체지향 프로그래밍 자바스크립트는 프로토타입 기반 객체지향 프로그래밍이므로, 먼저 객체지향 프로그래밍에 대해 알아볼 필요가 있다. 객체지향 프로그래밍은 여러 개의 독립적 단위, 객체의 집합으로 프로그램을 표현한다. 속성 : 객체의 특징이나 성질을 나타내며, 이를 통해 구별하고 인식 -> 필요한 속성만 간추려 표현하는 것을 추상화라고 한다. // 이름과 주소 속성을 갖는 객체 const person = { name: 'Lee', address: 'Seoul' }; console.log(person); // {name: "Lee", address: "Seoul"} 객체는 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조라고 할 수 있는..
📖 모던 자바스크립트 교재) 18장. 함수와 일급 객체 01. 일급 객체 다음 조건을 만족하는 객체를 일급 객체라 하며, 자바스크립트의 함수는 모두 만족하여 일급 객체다. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. ⭐ 함수의 매개변수에 전달할 수 있다. ⭐ 함수의 반환값으로 사용할 수 있다. 🖥️ 예시 코드 // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. const increase = function(num) { return ++num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = { increase }; // 3. 함수는 매개변수에 전달할 수 있다. //..
📖 모던 자바스크립트 교재) 17장. 생성자 함수에 의한 객체 생성 다양한 객체 생성 방식 중, 생성자 함수를 사용하여 객체를 생성하는 방식을 살펴보도록 하자. 01. Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다. 🖥️ 예시 코드 // 빈 객체의 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Lee'; person.sayHello = function() { console.log('Hi! My name is ' + this.name); }; console.log(person); // {name: "Lee"..
📖 모던 자바스크립트 교재) 16장. 프로퍼티 어트리뷰트 01. 내부 슬롯과 내부 메서드 프로퍼티 어트리뷰트를 이해하기 위한 개념이다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. ⚠️ 자바스크립트 엔진에서 실제로 동작하지만, 외부로 공개된 객체의 프로퍼티는 아니다. -> 직접 접근할 수 없다. 02. 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 프로퍼티의 상태 : 프로퍼티의 값(value), 값의 갱신 가능 여부(writable)..