00. TL;DR항목Java (클래스 기반 상속)JavaScript (프로토타입 기반 상속)상속 방식클래스(Class) → 인스턴스객체(Object) → 객체상속 키워드extends, super__proto__, Object.create, extends (ES6 이후)실행 시점컴파일 타임에 상속 구조 결정런타임에 동적으로 상속 구조 설정 가능클래스 수정 여부불가능 (정적 구조)가능 (동적 구조)메서드 참조 방식클래스 메서드 테이블을 참조프로토타입 체인을 따라 탐색01. 상속 모델의 기본 구조01.01. 자바: 클래스 기반(Class-based)class Animal { void speak() { System.out.println("Animal speaks"); }}class Dog extends..
00. TL;DRES6(ECMAScript 2015)에서 도입된 class 문법은새로운 기능이 아니라 기존 프로토타입 기반 상속을 감싸는 문법적 설탕(Syntactic Sugar)입니다. 도입 이유:기존 프로토타입 문법이 복잡하고 불명확해서,객체지향 스타일에 익숙한 개발자들이 진입 장벽을 느꼈기 때문에,코드 가독성과 일관성을 높이기 위해01. 기존 프로토타입 문법의 한계function Person(name) { this.name = name;}Person.prototype.greet = function () { return `Hi, I'm ${this.name}`;};함수와 프로토타입을 명시적으로 분리해서 작성해야 함메서드 상속, constructor 연결, prototype 체인 구성 등 모두 수..
00. TL;DR자바스크립트는 간단하면서도 유연한 객체 생성과 상속을 목표로 하여Java나 C++의 클래스 기반 상속 대신, 프로토타입 기반 상속을 채택했습니다.이는 객체를 직접 연결하고 공유하는 방식으로, 동적이고 유연한 웹 환경에 잘 맞았습니다.01. 역사적 배경01.01. 넷스케이프와 브렌던 아이크자바스크립트는 1995년, 넷스케이프 브라우저의 인터랙션을 위한 스크립트 언어로 탄생브렌던 아이크(Brendan Eich)가 단 10일 만에 설계목표: 초보자도 쉽게 사용할 수 있는 언어01.02. 복잡한 클래스 시스템은 부담스러움당시 Java, C++은 문법이 복잡하고 정적임대신 Self, Scheme 등 동적 언어의 아이디어를 도입객체를 복사하거나 연결하는 방식의 상속 구조 선택02. 기술적 이유02...
00. TL;DR문자열 인터닝은 문자열 값을 저장하고 재사용하기 위한 문자열 테이블(String Intern Table)을 이용합니다.문자열 테이블에 저장되는 것은 자바스크립트 코드에서 보이는 "객체"가 아니라, 엔진 내부에서 관리되는 저수준의 문자열 구조체입니다.우리가 "hello"처럼 쓰는 건 String 객체가 아니라, 내부 엔진에서 관리하는 힙 상의 값입니다.01. 인터닝이란?인터닝은 다음과 같은 원리를 기반으로 합니다:"동일한 값의 데이터는 한 번만 저장하고, 그것을 참조 한다."예를 들어 다음과 같이 같은 문자열 "hello"가 여러 번 사용된다면:const a = "hello";const b = "hello"; 자바스크립트 엔진은 "hello"라는 문자열 값을 딱 한 번 메모리에 저장하고, ..
00. TL;DR자바스크립트에서 문자열은 불변(immutable)한 원시 타입이지만, 그 실제 데이터는 힙(Heap)에 저장되고, 스택에는 참조(reference) 만 남습니다. 01. 스택(Stack)과 힙(Heap)의 차이구분스택(Stack)힙(Heap)저장 방식선입후출 (LIFO)임의 접근 (Random Access)저장 대상원시 값의 참조, 변수, 함수 콜 정보객체, 배열, 문자열 등 복합 구조 데이터접근 속도빠름느림메모리 관리자동으로 스코프에 따라 제거가비지 컬렉터가 제거 (GC)02. 문자열은 어디에 저장될까?02.01. 문자열은 "원시 타입"이다자바스크립트에서 문자열은 primitive type(원시 타입)입니다.→ number, string, boolean, null, undefined,..
00. TL;DRJust-In-Time 컴파일(JIT)은 자바스크립트 같은 인터프리터 언어가 코드를 실행하면서 동시에 컴파일도 수행하는 기술입니다. JIT 덕분에 JS는 인터프리터 언어임에도 불구하고 매우 빠른 실행 속도를 가질 수 있습니다.01. JIT 컴파일이란?01.01. 기본 개념JIT은 "Just In Time"의 줄임말로, "코드를 실행하기 직전에(=딱 그 순간에) 기계어로 컴파일해주는 기술"을 말합니다.전통적인 컴파일 방식과 비교:방식특징AOT (Ahead-of-Time)실행 전에 전체 코드 컴파일 → 빠른 실행 (ex: C, C++)인터프리터코드를 한 줄씩 해석하며 실행 → 느림 (ex: 초창기 JS)JIT실행 중 필요한 부분만 컴파일 → 빠름 + 유연01.02. 왜 JIT이 필요한가?..
00. TL;DR리터럴(literal) 은 값 자체를 소스 코드에 직접 작성한 것.객체나 변수를 따로 선언하거나 생성하지 않고도, 코드 내에서 곧바로 사용할 수 있는 고정된 데이터 값을 말합니다.예: "Hello", 42, true, null, [1, 2, 3], { name: "John" }표현식(expression) 은 값을 생성하거나 평가할 수 있는 코드 단위.리터럴은 표현식의 일종이며, 항상 값으로 평가되는 가장 단순한 표현식01. 리터럴(Literal)이란?01.01. 기본 정의리터럴은 프로그래머가 작성한 코드 안에서 값 그 자체를 직접 나타낸 것입니다. 다시 말해, 어떤 데이터 값을 표현하기 위해 사용하는 고정된 표현식이며, 그 값은 이미 컴파일되거나 해석되는 시점에 정해져 있는 값입니다. 예..
00. TL;DRIEEE 754는 컴퓨터에서 부동소수점 수(소수 포함된 실수)를 표현하고 연산하기 위한 표준 규격입니다.표준화 이전에는 제조사마다 실수 표현 방식이 달라서, 연산 결과가 시스템마다 달라지는 문제가 있었습니다.부동소수점 수는 다음 3가지 구성요소로 표현됩니다:부호 비트 (Sign): 양수(0), 음수(1)지수 (Exponent): 크기 표현 (Bias 오프셋 적용됨)가수 (Mantissa 또는 Significand): 실제 유효숫자정밀도는 두 가지가 널리 사용됩니다:단정밀도(32비트): 1(부호) + 8(지수) + 23(가수)배정밀도(64비트): 1 + 11 + 52Bias를 통해 지수는 항상 양수처럼 저장되어 비교 연산이 단순해집니다.예: 지수 -2 → 저장값 = -2 + 1023 = 1..
- Total
- Today
- Yesterday
- nuxt
- double-linked-list
- JIT
- library mode
- string
- uselazyasyncdata
- JavaScript
- pakage-lock.json
- vue
- premitive
- string table
- bundler
- interning
- pnpm 명령어
- refrerence
- vee-validate
- TypeScript
- useasyncdata
- primitive
- scoped slot
- 모노레포 스크립트
- ViTE
- react-router
- 바이트 코드
- react
- npm ci
- prototype
- webpack
- object literal
- deep dive
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
