처음부터 차근차근

[TIL - 231103] 코어 자바스크립트, 자료구조 공부, 프로젝트 기획 본문

TIL

[TIL - 231103] 코어 자바스크립트, 자료구조 공부, 프로젝트 기획

HangJu_95 2023. 11. 6. 10:12
728x90

오늘 한 일

  • 코어 자바스크립트 this
  • 이중 연결 리스트 구현
  • 스택, 큐 공부 및 구현
  • 프로젝트 기획 및 MVP 날짜 정립

코어 자바스크립트 this

  • 코어 자바스크립트 this에 대해서 학습하였다.
  • 상황에 따라 this가 무엇을 가리키는지 다시 한번 복습하였고, 명시적으로 this를 바인딩해주는 방법을 학습
  • call/apply/bind를 잘 활용하면 좋은 점을 확인하였다.

전역 공간에서 this는 전역 객체를 가리킵니다. 전역 컨텍스트를 생성하는 주체가 바로 전역 객체이기 때문입니다.

전역변수를 선언하면 자바스크립트 엔진은 이를 전역객체의 프로퍼티로 할당합니다.

사실 자바스크립트의 모든 변수는 실은 특정 객체의 프로퍼티로서 동작합니다. 특정 객체란 바로 실행 컨텍스트의 렉시컬 환경입니다. 실행컨텍스트는 변수를 수집해서 렉시컬환경의 프로퍼티로 저장합니다.

함수는 그 자체로 독립적인 기능을 수행하는 반면, 메서드는 자신을 호출한 대상 객체에 관한 동작을 합니다.

this는 이때, 호출한 주체에 대한 정보가 담깁니다. 즉 함수로 호출하였으면 자체로 독립적인 기능을 하였기에 호출 주체는 전역 객체를 가리키지만, 메서드로 호출하면 this는 호출한 객체를 바라봅니다. 이는 메서드 안에 있는 함수에도 동일하게 적용됩니다.

콜백 함수도 마찬가지로 콜백 함수의 제어권을 가지는 함수(메서드)가 콜백 함수에서의 this를 무엇으로 할 지 정하며, 특별히 정의하지 않은 경우 기본적으로 전역 객체를 바라봅니다.

생성자 함수에서 this는 곧 새로 만들 구체적인 인스턴스 자신이 됩니다.

메서드의 내부 함수에서 this를 우회하는 방법으로는 변수를 활용하는 방법과, 화살표 함수를 사용하는 방법입니다. 화살표 함수는 this를 바인딩 하지 않기 때문에 상위 스코프의 this를 그대로 활용 할 수 있습니다.

또한 명시적으로 this를 바인딩하는 방법이 있는데 이는 Call/apply/bind 메서드를 활용하는 방법입니다. call/apply를 잘 활용하면 유사배열객체에 배열 메서드를 적용할 수 있습니다. 또한 생성자 내부에서 다른 생성자를 호출하여 간단하게 반복을 줄일 수 있습니다.

bind 메서드는 call/apply와 다르게 즉시 호출하지는 않고 넘겨 받은 This 및 인수들을 바탕으로 새로운 함수를 반환하기만 하는 메서드입니다.이것은 부분적용 함수와 this를 미리 적용하는 것에 사용됩니다.

 

이중 연결 리스트 구현

  • 저번에 배웠던 연결 리스트를 토대로 이번에는 연결 리스트를 구현하였다.
  • 구현하였을 경우 조금 더 쉬워진 느낌 (한번 작성해보니, 어떻게 구현해야 하는지 알 것 같다.)
  • 자료구조를 학습한 경우, 무조건 한번씩은 구현해 보자.

스택, 큐 공부 및 구현

  • 스택과 큐에 대해서 다시 공부하는 시간을 갖게 되었다.
  • 또한 자바스크립트의 배열로 구현시 정확하게 구현하는 것이 아닌 것으로 확인
  • Class로 구현해야 하는 것을 꺠달았다.

만약 내가 Queue를 구현해야 한다고 했을때, 이것을 단순히 리스트로 구현한다면?

O(N)이 걸린다.

단순한 계산이야 뭐 괜찮겠지만, 조금 더 효과적으로 하기 위해서는 이 부분도 수정해야 한다.

https://parkparkpark.tistory.com/101

프로젝트 MVP 날짜 및 기획 진행

  • OpenAI 관련 미지의 길을 걷는듯한 느낌
  • 그리고 다들 사건 사고가 많아서 시간이 오래걸린다.
  • 11/17일까지 마무리 하고 이력서용으로 한 줄 넣을 수 있도록 하자.