📌 프로토타입 객체 프로토타입 객체는 객체 간 상속을 구현하기 위해 사용됩니다. 프로토타입은 어떤 객체의 상위 객체의 역할을 하며, 다른 객체에게 공유 프로퍼티(메서드도)를 제공할 수 있습니다. 모든 객체는 [[Prototype]] 이라는 내부 슬롯을 가집니다. 슬롯의 값은 프로토타입의 참조입니다. 객체가 생성될 때, 객체 생성 방식에 따라 프로토타입이 결정되어 [[Prototype]] 에 저장됩니다. 모든 객체는 하나의 프로토타입을 갖고, 모든 프로토타입은 생성자 함수와 연결되어 있습니다. 📌 __proto__ 접근자 프로퍼티 모든 객체는 __proto__ 접근자 프로퍼티로 [[Prototype]] 내부 슬롯에 간접적으로 접근할 수 있습니다. Object.prototype의 접근자 프로퍼티인 __pro..
📌 클래스란? 자바스크립트에서 클래스는 함수의 한 종류입니다. 따라서 값으로 사용할 수 있는 일급 객체입니다. 일급 객체의 특징 무명의 리터럴로 생성 가능 (런타임에 생성 가능) 변수나 자료구조에 저장 가능 함수의 매개변수에게 전달 가능 함수의 반환값으로 사용 가능 기본 문법 class Person { constructor(name, age) { // 생성자 // 인스턴스 생성 및 초기화 this.name = name; this.age = age; } introduce() { // 프로토타입 메서드 console.log(`Hello, My name is ${this.name}`); } static sayHi() { // 정적 console.log('hi'); } } const jack = new Pers..
클로저 란? 클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Environment)의 조합입니다. ➡️ 함수와 함수가 정의된 위치의 변수와의 관계를 유지하는 것 함수가 실행될 때, 그 함수의 어휘적 환경이 생성됩니다. 이 어휘적 환경에는 함수 내부에서 사용하는 변수와 해당 변수들의 상위 스코프에 위치한 변수들이 포함됩니다. 해당 함수가 반환될 때, 해당 함수와 그 함수가 선언된 어휘적 환경을 담고 있는 클로저가 생성됩니다. 클로저는 반환된 내부함수가 자신이 선언됐을 때의 환경(어휘적 환경)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프) 밖에서 호출되어도 그 환경(스코프)에 접근할 수 있는 함수입니다. function outer() { var x = 1; function inner() {..
원시 자료형 1, 'string', true, undefined, null, Symbol() // number, string, boolean, undefined, null, symbol 참조 자료형 [0, 1, 2] // 배열 {name: 'kim', age: 17} // 객체 function sum(x, y) { return x + y } // 함수 원시 자료형의 특징 1. 원시 자료형을 변수에 할당하면 메모리 공간에 값 자체가 저장됩니다. let score = 90; 변수 score를 선언하면 컴퓨터에서 메모리 공간을 확보하고 score라는 이름을 붙힙니다. 그 다음 score라는 공간에 90을 할당합니다. → 값 자체를 공간에 저장 2. 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값 자체가 ..
❓ 문제 부트캠프에서 주어진 과제를 풀다가 헷갈렸던 개념이 있었습니다. 차례대로 문자열 3개를 입력받아서 그 중 가장 짧은 문자열을 리턴하면 되는데, 동일한 문자열이 있다면 먼저 나온 것을 리턴하면 되는 문제입니다. 아래 코드는 문제가 되었던 풀이입니다. function fn(word1, word2, word3) { const l1 = word1.length; const l2 = word2.length; const l3 = word3.length; if (l1
변수 특정 데이터에 이름을 붙여서 사용할 수 있는 것입니다. console.log를 사용하여 구구단 n단을 출력한다고 했을 때, 일일히 숫자를 바꿔주기가 너무 귀찮고 손이 많이 갑니다. 하지만 변수를 사용한다면 훨씬 편하게 출력할 수 있습니다. let n; // 변수 선언: 컴퓨터가 데이터를 기억할 수 있도록 메모리 공간을 확보하고 // 이름을 부여하는 것 n = 9; // 값 할당: 메모리 공간에 특정한 값을 넣는 것 console.log(num * 1); // 5 console.log(num * 2); // 10 console.log(num * 3); // 15 console.log(num * 4); // 20 console.log(num * 5); // 25 console.log(num * 6); ..