Могу ли я добавить метод после того, как метод был выполнен? - PullRequest
1 голос
/ 28 июня 2019

Предположим, у меня есть класс

 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 Ответ

1 голос
/ 13 июля 2019

Ваш подход верен, но в вашем коде есть несколько ошибок. Во-первых, функция 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'
...