밀하우스 마나스톰
GP
밀하우스 마나스톰
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Cocos Creato.. (35)
    • JavaScript 기.. (11)
    • JavaScript 게.. (4)
    • Dev Tool (1)
    • 1인 개발 (19)
      • 개발 환경 (4)
      • 기능 구현 (2)
      • 게임 리소스 (5)
      • 스팀 게임 출시 (4)
      • 좋은 글 스크랩 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Sprite Frame
  • 절차
  • steam
  • 코코스 크리에이터
  • 배열 함수
  • 게임 출시
  • 자바스크립트
  • 스팀
  • typescript
  • 게임 등록
  • 유니티
  • 코코스
  • 해상도
  • resolution
  • 타입스크립트
  • 무료 사운드
  • javascript
  • Cocos Creator
  • 웹 게임
  • tween

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밀하우스 마나스톰

GP

JavaScript 기본

함수 리스트 (Delegate)

2022. 4. 12. 19:10

유니티에서 옵저버패턴과 delegate를 사용했었던 경험이 몇 번 있었는데,

 

타입스크립트와 코코스 크리에이터를 사용하는 프로젝트에서도 비슷하게 사용하고 싶은 상황이 생겼다.

 

export class Manager {
    static delegate1: { [key: string]: any } = {}; // functions 컬렉션
    static delegate2: Array<any> = [];       // functions 배열
}

delegate는 이런 식으로 Dictionary 형태 또는 List 형태로 생성할 수 있다.

 

아무래도 타입스크립트는 함수와 변수를 다루는 데 있어서 차이가 없다시피 하고

 

any 타입으로 함수를 지칭할 수 있기 때문에 사용하기 더 간편하다.

 

 

start() {
    Manager.delegate1['jump'] = this.Jump.bind(this);   // 함수 추가
    Manager.delegate2.push(this.Jump.bind(this));       // 함수 추가
    
    Manager.delegate1['jump']?.();                      // 함수 실행
    Manager.delegate2[0]?.();                           // 함수 실행
}

Jump() {
    console.log("Jump");
}

각각의 함수 집합에 새로운 함수를 추가하거나, 들어있는 함수를 실행하는 방법은 위와 같다.

 

주의할 점은, 함수를 추가할 때 함수 실행 객체(this)에 대한 바인딩을 해줘야 한다.

'JavaScript 기본' 카테고리의 다른 글

순환 참조  (0) 2022.10.25
Call By Sharing  (0) 2022.04.22
Array 함수 #6. 기타  (0) 2022.03.08
Array 함수 #5. sort  (0) 2022.03.03
Array 함수 #4. reduce vs.forEach  (0) 2022.03.02
    'JavaScript 기본' 카테고리의 다른 글
    • 순환 참조
    • Call By Sharing
    • Array 함수 #6. 기타
    • Array 함수 #5. sort
    밀하우스 마나스톰
    밀하우스 마나스톰

    티스토리툴바