테스트는 성공이고 마침내 완벽한 서비스를 자랑하는 AOP 컴포넌트가 만들어졌다.
다시 예제 2-25로 돌아가 이제 마지막으로 프레드릭과 데이브의 명품 Aop.js에서 한 번의 Aop.around 호출로 여러 함수에 영향을 주는 장치를 살펴보자. 잘 들여다보면 원저작자는 Aop.around 인자명을 다르게 붙여놓았다.
Aop.around(pointcut, advice, namespaces)
여기서 pointcut은 Aop.js의 fnName이다. AOP 용어인 포인트컷(pointcut)은 애스팩트가 끼어들어 어떤 일을 수행하는 지점(포인트)을 말한다. Aop.js는 자바스크립트 정규 표현식으로 포인트컷을 구현했고 이 장에서 예시한 일반 함수명은 특별한 케이스에 해당한다.
namespace는 fnObj에 해당한다. 자바스크립트 이름공간은 다른 객체를 프로퍼티로 소유한 단순 객체다. 이름이 충돌하는 것을 예방하려면 한 이름공간 안에 모든 애플리케이션을 두는 것이 좋다. 이름공간을 이렇게 계층화할 수도 있다.
var MyApp = {}; MyApp.Encryption = {}; MyApp.WebServices = {}; MyApp.UI = {};
그리고 이름공간에 함수를 작성해 넣는다.
MyApp.WebServices.amazon = function() { // … getIsbn: function(title, author, pubYear) { // … } };