• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

Character

20.03.21 06:38 작성 조회수 152

0

캐릭터 생성자에서

run 함수에서도 사용하는 speed함수나 rafId같은 함수는 character 전역 변수로 선언하는게 이해가 되는데

lastScrollTop이나 scrollState같은 변수는 init 메서드 안에 있어도 될거 같은데  const self 외에 다른 변수들은 왜 선언하지 않고  character 전역변수로 선언하신건지 궁금합니다.

그리고 init 메서드 안에서 run메서드를 생성하고 이벤트 함수 안에서 requestAnimationFrame(run)을 하면

init 함수는 처음에 한 번만 사용하고 또 부르는건 init메서드 안의 run 함수니까 연산낭비가 없을거 같은데

run 함수를 따로 빼신 이유도 궁금합니다.

다른 분 질문에 답변 다신 걸 보니 이렇게 하면 초당 대략 60번씩 초기화가 되신다고 하신거 같아

이해가 잘 안됩니다 ㅠㅠ

init 메서드 안의 run 함수를 만들어 사용하면 init 메서드는 한 번만 실행되는게 아닌가요..?

답변 2

·

답변을 작성해보세요.

0

조지헌님의 프로필

조지헌

질문자

2020.03.24

친절한 답변 감사합니다!

0

speed, rafId, lastScrollTop, scrollState 모두 Character 객체의 속성(property)이랍니다~ 전역 변수는 아니고요^^
const c = new Character로 인스턴스 객체 생성 시에 c.speed 이런 식으로 접근할 수 있는 속성을 말합니다.
 self를 따로 선언한 이유는, 이벤트핸들러 내부에서 this가 캐릭터가 아닌 addEventListener를 호출한 객체를 가리키기 때문에 정확히 캐릭터 객체를 가리키기 위해 선언해준 것이고요.

run을 메서드로 따로 빼둔건, 자동으로 계속 실행하는게 하니라 필요할 때에만 캐릭터의 인스턴스객체가 호출하도록 하기 위해서 입니다. init은 new Character로 인스턴스 객체 생성 시에 초기화하기 위한 용도로 딱 한번 호출하는 것이고요.

질문해주신 부분들이 다 객체의 속성과 메서드에 관련된 것들인데, 7.객체(Object) 파트를 복습해보시면 도움이 될 것 같습니다^^