Могу ли я добавить метод после того, как метод был выполнен?
Считай, у меня есть класс
function home {}{
this.door=function(){},
this.tiles=function(){}
}
Я должен добавить некоторое сообщение после того, как его методы вызваны с использованием этой библиотеки, которая называется meld js ( https://github.com/cujojs/meld/blob/master/docs/api.md#meldafter)
моя попытка
var allMethods = new home();
Object.keys(allMethods).forEach(function(k){
aop.after(Object.prototype,key,function(){
console.log('Dont use me i am old')
});
})
это правильный подход?
1 ответ
Решение
Ваш подход правильный, но в вашем коде есть несколько ошибок. Во-первых, 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'