/**
* 배열을 가리키는 키로 라이프사이클 후크를 포함하는 객체
* 수명 주기가 트리거될 때 실행되는 함수
*
* @사적인
*/
const hooks_ = {};
/**
* 특정 라이프사이클에 대한 후크 목록 가져오기
*
* @param {문자열} 유형
* 후크를 가져올 수명 주기
*
* @param {함수|함수[]} [fn]
* 선택적으로 얻고 있는 수명 주기에 후크(또는 후크)를 추가합니다.
*
* @return {배열}
* 후크의 배열 또는 없는 경우 빈 배열.
*/
const 후크 = function(type, fn) {
hooks_[유형] = hooks_[유형] || [];
경우 (fn) {
hooks_[유형] = hooks_[유형].concat(fn);
}
return hooks_[유형];
};
/**
* 특정 videojs 수명 주기에 함수 후크를 추가합니다.
*
* @param {문자열} 유형
* 함수를 연결할 수명 주기.
*
* @param {함수|함수[]}
* 연결할 함수 또는 함수 배열입니다.
*/
const 후크 = 함수(유형, fn) {
후크(유형, fn);
};
/**
* 특정 videojs 수명 주기에서 후크를 제거합니다.
*
* @param {문자열} 유형
* 함수가 연결된 수명 주기
*
* @param {함수} fn
* 제거할 hooked 함수
*
* @return {부울}
* 제거되거나 정의되지 않은 함수
*/
const removeHook = 함수(유형, fn) {
const index = hooks(type).indexOf(fn);
만약 (인덱스 < = -1) {
거짓을 반환합니다.
}
hooks_[유형] = hooks_[유형].slice();
hooks_[유형].splice(인덱스, 1);
true를 반환합니다.
};
/**
* 특정 videojs 수명 주기에 한 번만 실행되는 함수 후크를 추가합니다.
*
* @param {문자열} 유형
* 함수를 연결할 수명 주기.
*
* @param {함수|함수[]}
* 연결할 함수 또는 함수 배열입니다.
*/
const hookOnce = 함수(유형, fn) {
hooks(유형, [].concat(fn).map(원본 => {
const 래퍼 = (...인수) => {
removeHook(유형, 래퍼);
return original(...args);
};
반환 래퍼;
}));
};
내보내다 {
후크_,
후크,
훅,
hookOnce,
removeHook
};