29일차 TIL 210413

1. 잡담.

  • 확실히 개발하는게 재밌는것같다. 모르는 내용을 처음에 배울때는 힘든데, 자기전까지 계속 생각이 나는걸 보니..ㅎ
  • 키보드 윤활을 했는데 도각도각 소리가 나면서 눌리는게 너무 좋다. 공부할때 이렇게 작지만 확실한 행복이 좋은 원동력이 되는 것 같다.
  • 개념을 깊게 파고드는것 & 적당히 추상화라고 치고(?) 넘기는것 사이에 고민이 많다.
  • 내가 무엇을 구현해야 하는가? 이번 스프린트에서 내가 코드치기가 어려웠던것은, 무엇을 구현해야하는지 잘 모르겠어서가 아닐까.. 코드를 차근차근 보고, 파일 간의 관계를 생각하고 차근차근 코딩했으면 좋겠다.
  • 헬프데스크에서 학습방법론 관련해서 좋은 글을 찾았다.
스크린샷 2021-04-13 오후 10 32 16
  • 내가 어떻게 배워야 할지 스스로 배워야 한다. 내가 새로운 내용을 배우고, 받아들이는 나만의 학습 공식이 얼마나 계속 발전되고 있는가? 에 초점 맞추기.
  • 오늘 학습에 대해서 스스로를 돌아보고, 계속 개선점을 찾아나가야겠다. 작은 성공 계속해서 쟁취해나가기!
  • 사진찍는 센스와 css 능력은 별개인걸까? : dance party 구현!
스크린샷 2021-04-13 오후 10 38 09
  • css 기능 중, transition 에 대해서 스스로 공부했다. 새로운 내용을 받아들이는 내 학습공식에 대해서 말해보자면, 일단 내가 가지고있는 파일에 적용해보는 것이었다.
  • 그런데 잘 안되는 기능도 있었다 ㅎ.. 이 부분은, 주말에 헬프데스크에 올려야겠다
  • constructor 함수에 매개변수를 주지않아도 되지만, strict mode 로 코딩하기 위해선 매개변수를 작성해줘야 한다.

2. 스프린트를 하면서 궁금했던것 : 생성자 함수안에 있는 메소드/밖에있는 메소드

function Person(name, first, second, third) {
    this.name = name;
    this.first = first;
    this.second = second;
    this.sum = function(){
      return this.first + this.second;
    }
  • 생성자 함수 안에 메소드가 있는경우, 저 생성자 함수가 실행될때마다 ( =인스턴스가 생성될 때마다) 계속 저 메소드는 실행된다. 효율성이 매우 떨어지게 된다.
function Person(name, first, second, third) {
    this.name = name;
    this.first = first;
    this.second = second;
    }
    Person.prototype.sum = function(){
      return this.first + this.second;
      }
  • 생성자 함수 밖에 메소드가 정의 되어있기 때문에, 객체가 만들어질때마다 실행되지 않는다. 한번 만 실행된다. 효율성 올라가고 메모리도 절약이 된다.
let kim = new Person('kim', 10, 20);
kim.sum = function(){
  return 'this :' +(this.first + this.second);
  
let lee = new Person('lee', 10, 10)
  • 이렇게 kim 객체에 대해서만 sum 메소드를 달리 쓰고싶을때 메소드를 변경해주면 된다. (=재사용성)
  • kim 객체 sum 메소드 호출할때, 객체 자신이 sum 이라는 속성을 가지고 있는지 찾는다. 존재하므로, 실행하고 끝난다.
  • lee 객체는 객체를 생성한 뒤에 sum 이라는 메소드를 정의한 적이 없다. sum이 lee에 없으면 생성자인 Person.prototype 에 메소드가 정의된지 찾고, 있으면 실행시킨다.
  • 속성들은 생성자 함수에 넣는것이 일반적이다. 함수는 특별한 이유가 있지 않다면 생성자 함수밖에다가 선언해주는것이 일반적임.

3. OOP 중 추상화개념을 다시 공부했다.

  • 추상화란, 특성을 일반화하고 세부사항을 제거하여 단순하게 만드는 과정이다.
  • 프로그램을 구성해하는 객체들이 어떤 속성과 메소드를 갖는지를 (실세계의 객체로부터) 추출함을 의미한다.
  • 예를들어, 사람이라는 객체를 구현한다하면, 사람이 가질 수 있는 속성과 메소드는 엄청 많을 것이다. 프로그래머가 이들을 모두 구현할 필요가 없다.(가능하지도 않다) 만들고자 하는 프로그램이 무엇이냐에 따라 필요한 속성과 메소드가 다르다.
  • 프로그래머는 사람이라는 객체에 필요한 속성과 메소드를 결정해야한다.
  • 추상화를 진행해야할떄 고려해야하는 것들 : 어떤 종류의 객체를 정의할 것인가? 각 객체는 어떤 속성과 메소드를 갖는가?

Updated: