JavaScript/모던 자바스크립트 Deep Dive

실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 1 소스코드의 타입ECMAScript 사양은 소스코드를 4가지 타입으로 구분한다.소스 코드의 타입설명전역 코드전역에 존재하는 소스 코드이며 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다.함수 코드함수 내부에 존재하는 소스 코드를 말하며 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다.eval 코드빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드를 말한다.모듈 코드모듈 내부에 존재하는 소스코드를 말하며 모듈 내부의 함수, 클래스 등의 내부 코드는 포함되지 않는다. 소스 코드를 4가지 타입으로 구분하는 이유는 소스코드의 타입에 따라 실행 컨택스트를 생성하는 과정과 관리 내용이 다르기 ..
22.1 this 키워드 객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적 자료구조이다. 메서드는 자신이 속한 객체의 프로퍼티를 참조/변경할 수 있어야 한다. 이때 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다. 객체 리터럴 방식으로 정의된 객체는 재귀적으로 자신이 속한 객체를 가리킬 수 있다. const circle = { radius: 5, getDiameter() { // 해당 메서드가 속한 객체의 프로퍼티나 다른 메서드를 참조하려면 // 자신이 속한 객체인 circle을 참조할 수 있어야 한다. return 2 * circle.radius; } } 위의 예제의 객체 리터럴은 circle 변수에 할당되기 직전에 평가되어 getDiameter..
21.1 자바스크립프 객체의 분류 JS 객체는 크게 3개의 객체로 분류할 수 있다. 표준 빌트인 객체 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며 JS 실행환경(브라우저 혹은 Node.js)과 관계없이 언제나 사용할 수 있다. 호스트 객체 ECMAScript 사양에 정의되어 있지 않고 JS 실행 환경에서 추가로 제공하는 객체 DOM, fetch, Canvas, Web Storage와 같은 클라이언트 사이트 Web API와 Node.js 고유의 API 호스트 객체를 제공. 사용자 정의 객체 사용자가 직접 정의한 객체 21.2 표준 빌트인 객체 JS는 Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Set..
19.7 프로토타입 체인 자바스크립트는 객체의 프로퍼티(메서드 포함)에 접근할 때 해당 객체에 접근하려는 프로퍼티가 없다면 [[Prototype]] 내부 슬릇의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색한다. 이를 프로토타입 체인이라 한다. 그렇다면 아래의 코드를 확인하자 function Person(name) { this.name = name; } // 프로토타입 메서드 Person.prototype.sayHello = function () { console.log(`Hi! My name is ${this.name}`); }; const me = new Person('Juhyeon'); // hasOwnProperty는 Object.prototype의 메서드다. con..
Javascript는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 언어다. Javascript는 객체기반의 프로그래밍 언어이며, Javascript를 이루고 있는 거의 모든 것이 객체다. 원시 타입의 값을 제외한 나머지 값들(함수, 배열, 정규 표현식등)은 모두 객체다. 19.1 객체지향 프로그래밍 객체지향 프로그래밍은 프로그램을 여러 개의 독립적 단위인 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 의미한다. 객체지향 프로그래밍은 실체를 인식하는 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작한다. 실체를 인식하거나 구별할 수 있는 속성을 갖는다. 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화라 한다. // 실체의 특성을..
1. 일급 객체 일급 객체란 다음 조건을 만족하는 객체를 의미한다. 무명의 리터럴로 생성할 수 있다. => 런타임에 생성이 가능 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 사용할 수 있다. 함수의 반환값으로 사용할 수 있다. // 1, 2번 조건 const increase = (num) => { return ++num; }; const decrease = (num) => { return --num; }; // 2번 조건 const auxs = { yes: () => { console.log('yes') }, increase, decrease } // 3, 4번 조건 const makeCounter = (increase) => { let num = 0; return () => ..
58청춘
'JavaScript/모던 자바스크립트 Deep Dive' 카테고리의 글 목록