클래스의 메소드를 함수를 이용하여 호출하는 방법을 알아보도록 합니다.
템플릿 메소드를 이용한것입니다.
대략 23분 참고
https://www.youtube.com/watch?v=ik7HZrEqfEA&list=PLBA53uNlbf-vuKTARH6Ka7a_Jp0OVT_AY&index=2
const SET = {
stage: {
max:10,
}
};
const Subdata = class {
constructor(listener) {}
notify() {}
clear() {
this._clear();
}
};
const Stage = class extends Subdata {
_clear() {
console.log('_clear()');
console.log(SET.stage.max)
}
};
을 아래와 같이 변경합니다.
const SET = {
stage: {
max:10,
}
};
const ERR = v => { throw v; };
const TMPL = (self, method, ...arg) => {
'_' + method in self ? self['_' + method](...arg) : ERR();
}
const HOOK = (p, method) => {
return typeof p.prototype[method] === 'function' ? '_'+method : ERR();
};
const Subdata = class {
constructor(listener) {}
notify() {}
clear(...arg) {
TMPL(this, 'clear', ...arg);
}
};
const Stage = class extends Subdata {
constructor() {
super();
}
[HOOK(Subdata, 'clear')](...arg) {
console.log('_clear()');
console.log(SET.stage.max);
console.log(...arg);
}
};
const APP = (SET => {
})(SET);
//APP.init();
const s = new Stage();
s.clear({a:1,b:2,c:3});
'프로그래밍 > Js' 카테고리의 다른 글
vue3 options API 사용시 watch 사용법 (0) | 2023.04.12 |
---|---|
재귀함수 (꼬리물기 최적화) 샘플 (0) | 2023.04.04 |
html table 을 엑셀로 출력하기 (0) | 2023.03.30 |
ES6 부동소수점 계산 라이브러리 (0) | 2023.03.29 |
크롬 비활성화된 탭 네트워크(웹소켓) 끊어지는 현상 Intensive Wake Up Throttling (0) | 2023.03.07 |