19. 프로토타입
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
19.1 객체지향 프로그래밍 객체지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍_Imperative programming 의 절차지향적 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체_object 의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말한다. 객체지향 프로그래밍은 실세계의 실체(사물이나 개념)를 인식하는 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작한다. 실체는 특징이나 성질을 나타내는 속성_attribute/property 을 가지고 있고, 이를 통해 실체를 인식하거나 구별할 수 있다. 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라 하며, 객체지향 프로그래밍은 독립적인 객체의 집합으로 프로그램을 표현하려는 ..
8. 제어문
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
글의 복사를 원하시면 여기(노션글 보러가기)를 클릭해주세요
18. 함수와 일급 객체
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
18.1 일급 객체 다음과 같은 조건을 만족하는 객체를 일급 객체라 한다. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 자바스크립트의 함수는 다음 예제와 같이 위의 조건을 모두 만족하므로 일급 객체다. 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미다. 객체는 값이므로 함수는 값과 동일하게 취급할 수 있다. 따라서 함수는 값을 사용할 수 있는 곳(변수 할당문, 객체의 프로퍼티 값, 배열의 요소, 함수 호출의 인수, 함수 반환문)이라면 어디서든지 리터럴로 정의할 수 있으며 런타임(runtime)에 함수 객체로 평가된다. 18.2 함수 객..
17. 생성자 함수에 의한 객체 생성
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
17.1 Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다. 생성자 함수(constructor)란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스(instance)라 한다. 자바스크립트는 Object 생성자 함수 이외에도, String, Number, Boolean, Function, Array, Date, RegExp, Promise 등의 빌트인(built-in) 생성자 함수를 제공한다. 반드시 Object 생성자 함수를 사용해 빈 객체를 생성해야 하는 것은 아니다. 객체를 생성하는 방법은 객체 ..
16. 프로퍼티 어트리뷰트
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
16.1 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property) 와 의사 메서드(pseudo method) 다. ECMAScript 사양에 등장하는 이중 대괄호로 감싼 이름들이 내부 슬롯과 내부 메서드다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로 자바스크립트는 내부 슬롯과 내부 메서드에 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다. 단, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공한다. 모든 객체는 [[Prototype]] 이라는 내부 슬롯을 갖는다. 이 내부 슬롯은 자바스크립트 엔진의 내부 로직..
15. let, const 키워드와 블록 레벨 스코프
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
15.1 var 키워드로 선언한 변수의 문제점 15.1.2 함수 레벨 스코프 var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 따라서 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다. 15.2 let 키워드 15.2.2 블록 레벨 스코프 let 키워드로 선언한 변수는 모든 코드 블록(함수 ,if문, for문, while문, try/catch문 등) 을 지역 스코프로 인정하는 블록 레벨 스코프(block-level scope) 를 따른다. 함수도 코드 블록이므로 아래와 같이 스코프를 만든다. 이때 함수 내의 코드 블록은 함수 레벨 스코프에 중첩된다. 15.2.4 변수 호이스팅 var var 키워드로 선언한 변수는 런타임 이전에..