본문 바로가기

전체 글67

[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.
[21.01.29] YDKJSY - Mixing (Up) "Class" Objects OOP의 기본적인 속성 클래스 지향적 인스턴스화 상속화 다형성 Class Theory OOP 혹은 클래스 지향 프로그래밍은 본질적으로 실생활의 문제를 정의하고 해결하기 위해 등장한 방법이다. 때문에 이 지론에서는 어떠한 데이터를 적절히 운용하기 위해 그에 밀접하게 관련된 동작들을 가지고 있어야 한다고 얘기한다. 해당 프로그래밍 기법에 따른 가장 이상적인 디자인 패턴은 데이터와 동작들을 함께 패키징하여 하나의 구조 안에 넣는 방법인데, 이 때 패키징하는 과정을 '캡슐화', 데이터들이 들어가는 구조를 '자료 구조'라고 정의할 수 있다. JavaScript "Classes" JS는 클래스 지향 언어에서 쓰이는 몇몇 문법을 사용하고 있긴 하지만, 실제적으로 클래스를 가지고 있는 것은 아니다. 클래스는 하나의 '.. 2024. 1. 7.
[21.01.22] YDKJSY - Objects Type JS 에는 6가지의 주요 타입들이 있다. string number boolean null undefined object object type(객체 타입) 을 제외한 나머지 타입들은 'primitive type'(원시 타입)이라고 한다. 그렇기에 다른 것들은 일단 넘어가고, 객체 타입에 대해 알아 보자. 이 타입에는 몇몇의 하위 타입들이 존재하는데, function, Array, Built-in Object가 그 예이다. 다른 두 가지에 대해서는 비교적 익숙하니 Built-in Object의 성질을 얘기해 보자면, 일단 이것들은 외형은 class 처럼 보일지 몰라도 JS에서는 그저 함수일 뿐이다. (생성자 '함수' 처럼 말이다.) String Number Boolean 해당 이름을 가진 타입을 객.. 2024. 1. 7.
[21.01.19] YDKJSY - this Or That? / this All Makes Sense Now! ⚠️ 여기서 설명하는 this는 JS 안에서의 개념이다. 다른 언어에서도 this를 사용하지만, 똑같은 개념으로 보는 일이 없도록 하자. Confusions this는 그 이름 때문에 개발자들에게 종종 혼동을 가져다 준다. 이 개념에 대해 크게 착각하는 두 가지가 있는데, 그것은 다음과 같다. this 는 선언된 함수 자신을 가리킨다. this 는 호출한 함수의 스코프를 가리킨다. 이러한 착각은 주로 this를 렉시컬 스코프의 개념과 연관지어 추론할 때 발생하고는 한다. What's this? 바인딩 = binding = 묶는, 결속하는 행위 this는 동적으로 무언가를 바인딩한다. 즉, 함수 인용 조건에 따른 맥락 의존적인 성격을 가지고 있는 개념으로 보는 게 더 정확하다. 그렇기 때문에 this는 함.. 2024. 1. 7.
[21.01.16] YDKJSY - Appendix A: Exploring Further Implied Scopes 스코프는 가끔 관찰되지 않는 영역에서 생성된다. 이 스코프는 프로그래밍을 할 때 상식 선에서 코드를 작성한다면, 프로그램에 거의 영향을 끼칠 일은 없겠지만 그럼에도 불구하고 알 만한 가치가 있는 지식이 되어줄 것이다. Parameter scope Function name scope Parameter Scope 함수의 매개 변수는 기본적으로 함수 내의 지역 변수와 동일한 스코프를 공유할 수 있다 볼 수 있지만, 매번 그렇지는 않다. 단순한 매개 변수의 선언인 경우 이 표현이 허용될 수 있다. 하지만 default parameter(a = b), rest parameter(...args), destructured parmeter({a, b}) 처럼 조금 복잡하게 인용된 매개 변수로.. 2024. 1. 7.