오늘 공부한 내용 📋

JS에서의 Class와 그 사용법, 구조인 Prototype에 대해서 간략히 배웠고 Array.reduce()에 대해서 연습도 많이 해봤다. 그리고 Module을 export하고 import하는 실습도 진행했고 default를 활용하는 방법도 배웠다. NaN와 isNaN()도 배우고 읽기전용배열인 String은 각각의 값을 변경할 수 없다는 것도 다시 상기했다. 그리고 key: value로 구성된 property의 특성에 대해서 배우고(key는 문자로 묵시적으로 변환된다는 등) 현재 객체의 주소값을 가지고 있는 this, 공유 하는 프로퍼티나 메서드인 static, 생성자 constructor, 접근제어자 private, public, 그리고 getter와 setter의 JS에서의 사용법 그리고 JS의 상속 그리고 상속받으면서 생성자에서 부모의 요소를 초기화하는 super(), 그리고 변수와 함수 호이스팅, 객체지향프로그래밍 전반에 대해 공부했다.

어려웠던 내용 🤢

Prototype의 개념이 JS에만 있어서인지 이 부분이 두루뭉실하고, 객체지향 쪽이 많이 어려웠던것 같다. 특히 private와 get, set을 사용해보는 예제에서 자꾸 예상치 못한 에러가 발생해서 답답했다. 그리고 변수 호이스팅에 관련되어서 TDZ라는게 나오는데 봐도 잘 이해가 되지 않는다. 이론에 대해서 많이 배웠는데 어려운 이론을 배우는 느낌이 났다.

궁금한 내용 🧐

예전부터 객체지향을 배우면서 느끼는건데 보통 프로젝트를 하면 객체지향을 잘 사용하지 않는다. 거대한 프로젝트에서만 객체지향을 사용하는걸까? (Java 제외…) 한번 객체지향을 적극적으로 활용하는 프로젝트를 해보면 어떨까 싶다.

느낀 점 🤔

오늘 배운거는 책에서 심도있게 공부하며 배워야 그나마 이해가 될만한 내용인 것 같다. 이번 하루 수업을 들어서 온전히 내것으로 만드는것은 천재가 아닌 이상 거진 불가능 하지 싶다. 아쉬운것은 이것을 바로 프로젝트를 만들어보며 연습을해야 장기기억에 저장될 확률이 올라가는데, 보통 프로젝트를 만들면 객체지향을 잘 쓰지 않게된다는 것이 아쉽다. 기능을 구현하는것만 생각해도 벅차기 때문인듯 하다. 그래서 이 객체지향프로그래밍을 연습할 수 있는 기회가 있으면 좋겠다. 혹시 내일 수업에서 많이 연습할 수 있을까? 그럼 좋겠다.