Development47 [21.04.25] 호이스팅에 대한 오해와 진실 호이스팅이 뭘까? 솔직히 프로그래밍을 공부한 지 얼마 안 되었을 때는 호이스팅과 호스팅이 똑같은 말인 줄 알았다. 그리고 이 개념에 대한 뜻을 몇 번 훑어보고는 '아, 변수나 함수를 스코프 상단으로 끌어올리는 기술이구나'라고만 이해했다. 과연 그럴까? 지금부터 호이스팅에 관한 몇가지 오해와 이것을 가능하게 하는 메커니즘에 대해 설명해보려고 한다. Just Metaphor 현재의 내가 알고 있는 호이스팅의 뜻을 한마디로 정의 하라고 하면 변수, 함수의 선언부가 위치한 인접 스코프의 최상단에서 해당 식별자의 관측이 가능한 현상이라 얘기할 수 있겠다. 단순하게 바라보자. 어떤 스코프에서 선언한 위치에 상관없이 선언 대상을 확인할 수 있다면 맨 처음에는 무슨 생각이 들까? hoist(); // hoisted! .. 2024. 1. 8. [21.02.22] custom DOM library 만들기 과제를 진행하면서 DOM에 대한 피드백을 많이 접하게 되었는데, 그 중에서 DOM에 대한 라이브러리를 직접 만들어 사용해보라는 리뷰가 눈에 띄어 구글링을 해보고 직접 구현해보려 했다. 하지만 막상 어떤 패턴을 사용해야할지 감이 오질 않아, 다양한 예제들을 접하면서 적용해볼 수 있을만 한 레퍼런스를 두고 그것을 참고해 만들어보기로 하였다. 고민 지점 예상할 수 있는 side effect 는 최대한 피하기. querySelector() vs. querySelectorAll() 싱글턴 패턴 vs. 생성자 패턴 Template 전체적인 패턴은 여기에 있는 코드를 대부분 차용했다. IIFE를 이용하여, 생성자 함수와 프로토 타입 메소드를 선언해두고, 그것을 인스턴스로 만들어주는 함수를 바로 반환함으로써, 굳이 n.. 2024. 1. 8. [21.02.20] OOP - public, private and protected Reference Private and protected properties and methods OOP 의 중요한 관점 중 하나는 외부 인터페이스와 내부 인터페이스를 분리하고 그 접근성에 제한을 두는 것에 있다. A real-life example 커피 머신을 예로 들어 보자. 이 커피 머신 외부에는 사용자와 접촉이 가능한 여러 인터페이스가 존재할 것이다. 이것은 버튼일 수도 있고, 화면일 수도 있다. 사용자는 최종 결과물인 커피를 얻기 위해 몇 가지의 인터페이스만 조작하면 되지만, 커피 머신 자체의 관점에서 하나의 커피를 만들기 위해서는 단순히 버튼을 누르는 행위만으로는 충분치 않을 것이다. 버튼을 누르는 행위를 기점으로 내부에 유기적으로 연결되어 있는 수많은 인터페이스들이 상호 작용할 것이고, 그 .. 2024. 1. 8. [21.02.01] YDKJSY - Prototypes [[Prototype]] 모든 객체는 [[Prototype]] 체인으로 연결된 내부 프로퍼티를 가지고 있다. 이 말은 곧 객체 내에서 특정 프로퍼티를 검색하고자 할 때, 다른 객체에도 참조가 가능하다는 소리다. 기본적으로 모든 객체에는[[Get]] 연산이 있고 이것은 객체 내에서 프로퍼티를 참조할 때 사용되는데, 현재 객체 내에서 요청한 프로퍼티가 존재하지 않을 때 [[Prototype]] 링크를 따라가게 된다. 또한 반복문이나 기본적으로 키가 존재하는지 알아보기 위해 in 을 사용할 때에도 현재 객체에서만 탐색을 하는 것이 아니라 연결된 모든 객체를 참조하게 된다. 이렇듯 객체 내에서 탐색 관련 연산을 사용할 때는 체인의 끝까지 탐색을 하게 되는데, 그렇다면 [[Prototype]]의 끝은 어디일까? .. 2024. 1. 8. 이전 1 2 3 4 5 6 7 8 ··· 12 다음