[JS] Prototype
·
HTML,CSS,JS
👀 Prototype이란?자바스크립트는 프로토타입 기반의 언어이다. 클래스 기반 언어 -> 상속프로토타입 기반 언어 -> 복제 진짜 복제가 아니라 프로토타입 링크를 통해 해당 객체를 참조하여 만드는 것이다. 자바스크립트에서는 원시타입(Number, String, Boolean, Symbol, Undefined, null)을 제외한 모든 참조 타입이 객체이다.객체는 원형을 참조해서 새로운 객체를 생성하게 되는데, 그 때 프로토타입 링크인 __proto__가 같이 생성된다.function Person() {}var HeeDong = new Person();var Guri = new Person();Person이라는 함수가 정의 되고, Person 함수의 prototype 속성은 Person Prototyp..
[JS] closure
·
HTML,CSS,JS
이전에 조사했었지만,, 너무너무 어렵게 느껴졌던 개념이다.이번 기회에 closure를 부셔버리겠어,, 부서지는건 나일지도 👀 Closure란?클로저는 주변 상태(어휘적 환경)에 대한 참조와 함께 묶인(포함된) 함수의 조합입니다라고 MDN에 나와있지만 정말 무슨 말인지 이해가 안된다,, 코드를 살펴보자.function doSomething() { const x = 10; function sum(y) { console.log(x+y); } return sum;}const something = doSomething();something(5); // 15doSomething 함수는 sum 함수를 리턴하고 있다.sum 함수에서는 doSomething 함수의 x 변수를 참조하고 있다. doSomething..
[JS] This
·
HTML,CSS,JS
👀 this란?Java에서 this는 자기 자신을 가리키는 참조 변수로 객체 자신에 대한 참조 값을 의미한다.주로 매개변수와 객체 자신의 멤버 변수 명이 같을 때, 구분하기 위해 사용된다.public class Person { private String name; public Person (String name) { this.name = name; }}이런 식으로 멤버 변수에 매개변수를 할당해주기 위해 사용한다. 하지만 JS에서 this 키워드는 다른 언어에서와는 다르게 동작한다!!(왜 맨날 JS 너만 달라...) JS에서 this에 바인딩되는 객체는 해당 함수의 호출 방식이나 함수 선언 위치에 따라 달라지게 된다.어떤 객체가 바인딩 될 지 주의해야 한다는 의미이다.👀 일반..
[JS] 동작원리
·
HTML,CSS,JS
👀 JS 엔진과 구동 환경자바스크립트를 실행하기 위해서는 자바스크립트 엔진이 필요하다.Google에서 만든 V8 엔진이 가장 대표적인 예시이다. 자바스크립트 엔진은 Memory Heap과 Call Stack으로 이루어져 있다.Memory Heap : 메모리 할당이 일어나는 곳으로 변수와 함수 같은 객체 등이 담기는 곳이다.Call Stack : 함수를 호출들이 쌓이는 스택이다.자바스크립트 엔진 자체는 싱글 스레드이다. 실제 자바스크립트가 구동되는 환경인 웹 브라우저는 멀티 스레드로 동작하기 때문에 비동기 처리가 가능한 것이다.정확히는 Web API가 멀티 스레드로 동작하는 것이다. 따라서 자바스크립트의 런타임 환경은 위의 그림과 같다.Web APIs : 브라우저에서 제공하는 API들로, 비동기 처리를 ..
[개발] Debounce와 Throttle
·
개발
Debounce와 Throttle은 이벤트나 함수 호출의 빈도를 줄여서 성능을 최적화 시키기 위해 사용되는 개념들이다.검색하는 상황을 예시로 들어보자.한 글자 입력시 마다 요청을 보내는 것보다, 입력 중간중간 특정 시점이나 입력이 끝난 후 요청을 보낸다면 api 호출의 수가 줄어들게 된다.이 때, Throttle은 특정 시점에 api를 호출하는 것이고 Debounce는 입력이 끝난 후에 api를 호출하는 것이다.👀 Debounce연이어 발생한 이벤트를 하나의 그룹으로 묶어서 처리하는 방식이다.주로 처음이나 마지막으로 실행된 함수를 처리하는 방식으로 사용한다. 요청이 들어오고 일정 시간이 지난 후에 요청을 수행한다.일정 시간 안에 같은 요청이 추가로 들어오면 이전 요청은 취소된다. 이벤트를 실행하는 기점..
[WEB] 이벤트 전파와 이벤트 위임
·
WEB
❗️이벤트 전파(Event Propagation)자바스크립트에서 이벤트가 발생하면 세가지 단계를 거친다.캡쳐링 단계상위 요소 -> 하위 요소 DOM 트리의 가장 상위 요소인 document에서 이벤트가 발생한다.document부터 하위 요소들을 타고 target 요소까지 내려온다.target 단계이벤트 target에 도달이벤트가 target에 도착하면, 콜백 함수를 통해 이벤트를 처리한다.버블링 단계하위 요소 -> 상위 요소다시 이벤트가 target부터 상위 요소들을 타고 document까지 올라간다.캡쳐링 단계와 동일하게 모든 부모 요소를 지나간다.한 줄 요약하자면!이벤트 캡쳐링 : 가장 상위 요소에서 이벤트가 발생한 타겟 요소까지 내려가는 것이다.이벤트 버블링 : 타겟 요소에서 이벤트가 발생했을 때,..