더북(TheBook)

아주 조금씩 필요한 기능만 보충한다 생각하고 Aop.aroundreturn 키워드를 넣어보자(예제 2-35).

예제 2-35 애스팩트는 타깃에서 받은 값을 반환

소스 파일 2장\AOP\Aop_04.js

Aop = {
around: function(fnName, advice, fnObj) {
  var originalFn = fnObj[fnName];
  fnObj[fnName] = function () {
    var targetContext = {}; // 잘못되었다. 나중에 다시 설명한다.
    return advice.call(targetContext, {fn:originalFn, args:arguments});
  };
}
};

이제 타깃을 감싸서 원하는 인자를 받고 그 반환값을 가져올 수 있게 됐다. 한 가지만 더 고민하자. 자바스크립트는 예기치 않은 콘텍스트에서 함수를 실행하게 될 가능성이 매우 큰 언어다.

TIP

자바스크립트 함수는 자신의 고향 집이 아닌 객체에서 얼마든지 실행될 수 있어서 경우에 따라 콘텍스트가 정확한지 반드시 테스트해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.