Ваш подход верен, но в вашем коде есть несколько ошибок.
Во-первых, функция home
должна иметь ()
вместо {}
:
function home() {
this.door=function(){},
this.tiles=function(){}
}
Во-вторых, в вашем коде AOP
вам нужно предоставить объект для метода after()
, а не прототип.
var allMethods = new home();
Object.keys(allMethods).forEach(function(k){
aop.after(allMethods,k,function(){
console.log('Dont use me i am old')
});
})
(Также вам нужно использовать переменную k
, а не key
, поскольку она определена в методе forEach
)
Если вы запустите один из методов, вы получите желаемый результат.
allMethods.door() // result 'Dont use me i am old'