Могу ли я добавить метод после того, как метод был выполнен?

Считай, у меня есть класс

 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'
Другие вопросы по тегам