DEEPDIVE 5

[JS Deep Dive] 19장 프로토타입

1. 객체지향 프로그래밍 자바스크립트는 명령형imperative, 함수형functional, 프로토타입 기반prototype-based 객체지향 프로그래밍OOP Obejct Oriented Programming을 지원하는 멀티 패러다임 프로그래밍 언어다. C++과 Java와 같은 클래스 기반 객체지향 프로그래밍 언어의 특징인 클래스, 상속, 캡슐화를 위한 키워드인 public / private / protected 등이 없어서 자바스크립트는 객체지향 언어가 아니라고 오해하는 경우가 있다. 하지만 자바스크립트는 클래스 기반 객체지향 프로그래밍보다 효율적이며 더 강력한 객체지향 능력을 가지고 있는 프로토타입 기반의 객체지향 프로그래밍 언어이다. ⭐️ 클래스(Class) : ES6에서 클래스가 도입되었지만 사..

[JS Deep Dive] 16장 프로퍼티 어트리뷰트

1) 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught SyntaxError: Unexpected token '[' // 단, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공하기는 한다. o.__proto__ // -> Object.prototype ECAMScript 사양에 등장하는 이중 대괄호 [[...]]로 감싼 이름들이 내부 슬롯과 내부..

[JS Deep Dive] 7장 연산자

연산자(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 또한 피연산자는(operand) 값으로 평가될 수 있는 표현식 이어야 한다. // 산술 연산자 5 * 4 // -> 20 // 문자열 연결 연산자 'My name is ' + 'Lee' // -> 'My name is Lee' // 할당 연산자 color = 'red' // -> 'red' // 비교 연산자 3 > 5 // -> false // 논리 연산자 true && false // -> false // 타입 연산자 typeof 'Hi' // -> string 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식이다. 7.1 산술..

[JS Deep Dive] 5장 표현식과 문

5.1 값(Value) 값이란 식(표현식)이 평가되어 생성된 결과를 말한다. // 10 + 20은 평가되어 숫자 값 30을 생성한다. 10 + 20; // 30 여기서 평가란 식을 해석해서 값을 '생성'하거나 '참조'하는 것을 의미한다. 모든 값은 데이터 타입(Data Type)을 가지며 메모리에 2진수, 즉 비트의 나열로 저장된다. // 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다. var sum = 10 + 20; 값을 생성하는 방법은 다양하게 있는데, 값을 생성하는 가장 기본적인 방법은 리터럴을 사용하는 것이다. 5.2 리터럴(Literal) 리터럴이란 값을 생성하기 위해 미리 약속한 표기법이다. 따라서, 컴퓨터가 아닌 사람이 이해할 수 있는 값을 의미한다. 자바스크립트 엔진은..

[JS Deep Dive] 4장 변수 (식별자, 호이스팅, 식별자 네이밍 규칙, 네이밍 컨벤션)

4.1 변수란 무엇인가 ? 왜 필요한가 ? 변수는 '값을 저장하기 위해 확보한 메모리 공간 자체' 또는 '그 메모리 공간을 식별하기 위해 불린 이름'을 말한다. 사람은 계산과 기억을 모두 두뇌에서 하지만, 컴퓨터는 '연산'과 '기억'을 수행하는 부품이 나누어져 있다. 컴퓨터는 CPU를 사용해서 연산을 하고, 메모리를 사용해 데이터를 기억한다. 메모리란 ? 데이터를 저장할 수 있는 메모리 셀의 집합체 메모리 셀 하나의 크기는 1byte(8bit)이며, 컴퓨터는 메모리 셀의 크기인 1byte 단위로 데이터를 저장하거나 읽어들이고 각 셀은 메모리 주소를 갖는다. 메모리에 저장되는 데이터는 데이터의 종류와 상관없이 모두 2진수로 저장된다. 메모리 주소를 통해 값에 직접 접근하는 것은 치명적인 오류를 발생시킬 가..