Decorator
새 함수를 반환하여 전달 된 함수 또는 메서드의 동작을 수정하는 함수,가장 단순하게는 코드의 한 부분을 다른 코드로 감싸는 방법을 말한다.
Target, Property, Descriptor
--> 데코레이터 함수는 target, property, descriptor 3개의 변수를 인자로 받는다.
- target은 데코레이터가 적용될 객체에 해당한다.
- property는 데코레이터가 적용될 객체의 프로퍼티 이름을 의미한다.
- descriptor는 해당 객체의 프로퍼티에 대한 세부 정보(ex, writable, value)를 담고 있다.
function slow(x) {
// CPU 집약적인 작업이 여기에 올 수 있습니다.
alert(`slow(${x})을/를 호출함`);
return x;
}
function cachingDecorator(func) {
let cache = new Map();
return function(x) {
if (cache.has(x)) { // cache에 해당 키가 있으면
return cache.get(x); // 대응하는 값을 cache에서 읽어옵니다.
}
let result = func(x); // 그렇지 않은 경우엔 func를 호출하고,
cache.set(x, result); // 그 결과를 캐싱(저장)합니다.
return result;
};
}
slow = cachingDecorator(slow);
'Front-end > JavaScript' 카테고리의 다른 글
[JavaScript] this & argument가 없는 화살표 함수 (0) | 2022.05.09 |
---|---|
[JavaScript] 함수 바인딩 (bind) (0) | 2022.05.09 |
[JavaScript] setTimeout과 setInterval을 이용한 호출 스케줄링 (0) | 2022.05.09 |
[JavaScript] new Function (0) | 2022.05.09 |
[JavaScript] 객체로서의 함수와 기명 함수 표현식 (0) | 2022.05.09 |