일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 친절한SQL튜닝
- d
- network configuration
- /etc/network/interfaces
- 자료구조와함께배우는알고리즘입문
- baeldung
- 네트워크 설정
- 스프링 시큐리티
- 리눅스
- 티스토리 쿠키 삭제
- 스프링부트핵심가이드
- 알파회계
- iterator
- 처음 만나는 AI수학 with Python
- GIT
- 코드로배우는스프링부트웹프로젝트
- 코드로배우는스프링웹프로젝트
- 서버설정
- ㅒ
- resttemplate
- 처음 만나는 AI 수학 with Python
- 페이징
- Kernighan의 C언어 프로그래밍
- 데비안
- 목록처리
- 자바편
- 자료구조와 함께 배우는 알고리즘 입문
- 이터레이터
- 선형대수
- 구멍가게코딩단
- Today
- Total
목록Language/Javascript (14)
bright jazz music
생성자 함수에 의해 생성된 인스턴스는 프로토타입의 constructor 프로퍼티에 의해 생성자 함수와 생성자 함수와 연결된다. 이 때 constructor 프로퍼티가 가리키는 생성자 함수는 인스턴스를 생성한 생성자 함수다. 하지만 리터럴 표기법에 의한 객체 생성 방식과 같이 명시적으로 new 연산자와 함께 생성자 함수를 호출하여 인스턴스를 생성하지 않는 객체 생성 방식도 있다.// 객체 리터럴const obj = {};// 함수 리터럴const add = function (a, b) {return a + b};// 배열 리터럴const arr = [1,2,3];// 정규표현식 리터럴const regexp = /is/ig; 리터럴 표기법에 의해 생성된 객체도 프로토타입이 존재한다. 그러나 리터럴 표기법..
함수 객체의 prototype 프로토타입 prototype 프로퍼티는 함수객체만이 소유하며 생성자 함수가 생성할 인스턴스의 프로토타입을 가리킨다.// 함수 객체는 prototype 프로퍼티를 소유한다.(function () {}).hasOwnProperty('prototype'); // true// 일반 객체는 prototype 프로퍼티를 소유하지 않는다.({}).hasOwnProperty('prototype'); // false prototype 프로퍼티는 생성자 함수로 호출할 수 없는 함수들 // 화살표 함수는 non-constructorconst Person = name = > { this.name = name;}// non-constructor는 prototype 프로퍼티를 소유하지 않는다.co..
프로토타입 객체 또는 프로토타입은 객체 간 상속을 구현하기 위해 사용된다. 프로토 타입은 어떤 객체의 상위, 즉 부모 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티와 메서드를 를 제공한다. 프로토타입을 상속 받은 하위 객체는 상위 객체의 프로퍼티를 자신의 프로퍼티처럼 사용할 수 있다. 모든 객체는 [[property]] 라는 내부 슬롯을 가지며, 이 내부 슬롯의 값은 프로토타입의 참조이다. null인 경우도 있다. [[Prototype]] 슬롯에 저장되는 프로토타입은 객체 생성 방식에 의해 결정된다. 즉, 객체가 생성될 때 객체 생성 방식에 따라 프로토타입이 결정되고 [[Prototype]] 슬롯에 저장된다. 예를 들어 객체 리터럴에 의해 생성된 객체의 프로토타입은 Object.prototype..
실행 컨텍스트가 활성화될 때 자바스크립트 엔진은 해당 컨텍스트에 관련된 코드들을 실행하는 데 필요한 환경 정보들을 수집해서 실행 컨텍스트 '객체'에 저장한다. 이러한 객체는 자바스크립트 엔진이 활용할 목적으로 생성하는 것이며, 개발자가 확인할 수는 없다. 실행 컨텍스트 객체에는 아래와 같은 값들이 담기게 된다. VariableEnvironmentLexicalEnvironmentThisBinding 1. VariableEnvironment: 현재 컨텍스트 내의 식별자들에 대한 정보 + 외부 환경 정보 + '선언 시' LexicalEnvironment의 스냅샷이다.실행 컨텍스트를 생성할 때 VariableEnvironment에 정보를 먼저 담은 다음, 이를 그대로 복사해서 LexicalEnvironment..
1. 스트링 타입의 타입확인// 스트링 타입의 타입 확인if (typeof val === "string" || val instanceof String) {...} 2. 객체 타입의 타입확인// 순수객체 타입의 타입 확인if (typeof val === "object" && // 객체 타입인지 확인 val !== null && // null 제외 (typeof null도 "object"이기 때문) !Array.isArray(val)) // 배열 제외{ // 순수 객체인 경우의 처리}//...const obj = { name: "Kim" }; // trueconst arr = [1, 2, 3]; // falseconst null_val = n..
1. 실행 컨텍스트(excution context): 실행할 코드에 제공할 환경 정보들을 모아놓은 '객체'. - 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성한다.- 이를 콜 스택에 쌓아 올렸다가 가장 위에 쌓여 있는 컨텍스트와 관련 있는 코드들을 실행하는 식으로 전체 코드의 환경과 순서를 보장한다. '동일한 환경'이란 하나의 실행 컨텍스트를 구성할 수 있는 방법을 의미하며, 전역공간, eval(), 함수 등이 있다. 자동으로 생성되는 전역공간과 eval을 제외한다면, 실제적으로 컨텍스트를 구성하는 방법은 함수를 실행하는 것밖에 없다.//------------------------------------(1)var a = 1;function outer() { fun..
1. 메모리 생존주기자바스크립트에서의 메모리 생존주기는 대체로 아래와 같은 과정을 거친다. 할당: 필요한 메모리를 할당받는다. 이는 변수를 초기화 할 때 ('let a = 10;'), 객체를 만들 때('let obj = {}'), 함수를 호출할 때 등 다양한 상황에서 발생한다.사용: 할당받은 메모리를 읽거나 쓰는 작업을 수행한다. 예를 들어, 변수의 값을 변경하거나 객체의 속성에 접근하는 등의 작업이 여기에 해당한다.해제: 프로그램이 더이상 해당 메모리를 필요로 하지 않을 때, 메모리는 해제되어 시스템에 반환된다. 자바스크립트에서는 가비지 콜렉터가 이 작업을 자동으로 수행한다. 자바스크립트에서는 자바스크립트 엔진의 가비지 콜렉터가 불필요한 메모리를 자동으로 해제한다. 이는 Mark-and-Sweep(표시..
안녕 //바보 안녕
자바스크립트는 싱글 스레드에서 작동한다, 즉, 기본적으로 자바스크립트는 한 번에 하나의 작업만 동기 방식으로만 처리할 수 있다. 동기(synchronous)에 대해 간단히 설명하자면, 직렬 방식으로 작업을 처리하는 것을 의미하며, 이 요청이 시작된 이후에는 무조건 응답을 받은 이후에야 비로소 다른 작업을 처리할 수 있다. 그 동안 다른 모든 작업은 대기한다. 이러한 방식은 개발자에게 매우 직관적으로 다가오지만 한 번에 다양한 많은 작업을 처리할 수 없다. 반대로 비동기(asyncrhous)란 직렬 방식이 아니라 병렬 방식으로 작업을 처리하는 것을 의미한다. 요청을 시작한 후 이 응답이 오든 말든 상관없이 다음 작업이 이루어지며 따라서 한 번에 여러 작업이 실행될 수 있다. 자바스크립트는 분명히 싱글 스레..

리액트의 클래스형 컴포넌트에 대한 이해가 JS의 클래스, 프로토타입, this에 달려있다면, 함수형 컴포넌트에 대한 이해는 클로저에 달려 잇다. 함수형 컴포넌트의 구조와 작동 방식, 훅의 원리, 의존성 배열 등 함수형 컴포넌트의 대부분의 기술이 모두 클로저에 의존하고 있다. 1. 클로저의 정의 MDN에서는 '클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Scope)의 조합"이라고 돼 있다. function add() { const a = 10 function innerAdd() { const b = 20 console.log(a + b) } innerAdd() // 30 } 위 예제코드에서는 add 함수 내부에 innerAdd가 있다. innerAdd 함수는 내부에서 b 변수를 선언한 뒤 자신..