개요 `JavaScript`의 프로토타입은 언어의 핵심적인 특징 중 하나로, 이는 객체 지향 프로그래밍의 상속을 구현하는 메커니즘입니다. 이번 포스팅에서는 프로토타입을 사용한 예제를 통해 프로토타입 체인, 메서드의 정의, 상속, 그리고 프로퍼티 셰도잉에 대해 깊이 파보겠습니다. 프로토타입 체인 모든 `JavaScript` 객체는 `__proto__ `프로퍼티를 가지고 있으며, 이는 해당 객체의 프로토타입을 참조합니다. 클래스의 상속과 유사하게, 객체의 프로토타입은 메서드와 속성을 상속받을 수 있는 템플릿 역할을 합니다. `JavaScript`에서 생성된 객체들은 `prototype` 속성을 가지지 않고 `__proto__` 속성만 가질 수 있습니다. const testObj = {}; console.lo..
개요 JavaScript에서는 객체를 생성하는 방식이 여러가지가 존재하고 이러한 객체에 많은 기능들을 내포 하고 있습니다. 이번 블로그 포스팅을 통해 어떤 내용이 있는지 알아보도록 하겠습니다. 객체 생성 JavaScript에서 객체를 생성하는 방법은 여러 가지가 있습니다. 여기 세 가지 일반적인 방법과 각각에 대한 예시를 소개합니다. 객체 리터럴을 사용한 객체 생성 가장 간단하고 직관적인 방법은 객체 리터럴을 사용하는 것입니다. 이는 중괄호 `{}` 안에 키-값 쌍을 나열하여 객체를 직접 선언합니다. const car = { brand: "Ford", model: "Mustang", year: 1969, displayInfo: function() { return `${this.brand} ${this.m..
개요 클래스에 대해서 알아보기전 이러한 클래스가 생겨 날 수 있었던 배경이 무엇이었는지 알아야 합니다. 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 코드의 재사용성, 확장 가능성 그리고 유지보수의 용이성을 중요시한 프로그래밍 패러다임입니다. `JavaScript`는 원래 프로토타입 기반 언어로, 클래스 기반의 언어들과는 다소 차이가 있었습니다. 그러나 ES6 이후, `JS`에도 `class` 키워드가 도입이되면서, 개발자들에게 더 익숙한 클랙스 기반의 접근의 방식을 제공하기 시작하였습니다. 클래스 (Class) 클래스는 어떠한 객체(인스턴스)를 생성하기 위한 하나의 짜여진 설계도라고 생각하면 되겠습니다. 예를 들면 여러 개의 같은 붕어빵을 만들기위해 존재하는 하나의 ..
Symbol 우선 심볼은 원시 값 즉, `primitive` 값을 반환하는 내장 객체를 의미합니다. 그리고 `Symbol` 또한 원시 값으로 사용되고 있습니다. 같은 원시 값으로는 여러가지가 존재를 하는데 `number`, `string`, `boolean` 등이 있습니다. 심볼을 이용하게 되면 이러한 원시 값들을 고유한 하나의 토큰제공하거나 전역으로 사용할 수 있는 원시값을 생성해줍니다. 그렇다면 이러한 심볼은 어떻게 생성하고 사용하는지 알아보도록 하겠습니다. 생성자 심볼은 기본 값(원시 값) 이기 때문에 `new`연산자를 사용하지 않고 생성이 가능합니다. 그렇기 때문에 new 연산자를 통해 생성을 하고자 하면 에러가 발생 합니다. const symbol = new Symbol(); // TypeErr..
클로저(Closure)란? 클로저(Closure)는 JavaScript에서 중요한 개념 중 하나로, 함수와 스코프(scope) 관련된 개념입니다. 클로저는 함수가 자신의 외부 스코프에 접근할 수 있도록 하는 메커니즘으로, JavaScript의 강력한 특성 중 하나입니다. 이 글에서는 클로저의 정의, 사용 예제, 주의사항, 그리고 특이한 측면에 대해 알아보겠습니다. 클로저란 무엇인가? 클로저는 함수와 함수가 정의된 스코프 사이의 관계를 나타냅니다. 이 관계는 함수가 외부 스코프의 변수에 접근할 수 있을 때 클로저라고 합니다. 클로저는 아래와 같은 특징을 가집니다. 함수 내부에서 함수 정의: 함수 내부에서 다른 함수를 정의하고 반환하는 경우, 내부 함수는 외부 함수의 스코프에 접근할 수 있습니다. 외부 변수..
Promise `JavaScript`에서 비동기 작업을 효과적으로 관리하고 처리하기 위한 중요한 도구 중 하나인 `Promise`에 대해 알아보겠습니다. 이 글에서는 `Promise`의 개념, 사용법, `resolve`와 `reject`의 역할, 그리고 `Promise`를 활용한 실제 예제에 대해 다룰 것입니다. `Promise`는 비동기 작업의 성공 또는 실패를 나타내는 객체입니다. 주로 네트워크 요청, 파일 읽기, 데이터베이스 쿼리와 같은 비동기 작업을 다룰 때 사용됩니다. `Promise`는 세 가지 상태를 가질 수 있습니다. `Pending` (대기 중): 비동기 작업이 아직 완료되지 않은 상태입니다. `Fulfilled` (이행됨): 비동기 작업이 성공적으로 완료된 상태입니다. `Rejected..