遍历函数对象,并向对象内的每个单个函数添加一个新方法

问题描述

我有一个object中的一个functions,我需要添加一个名为method的新的单个log(它会显示method名称function中的每个Object在运行时动态地移动。

例如,假设这是我的object的动态functions

let actions = { 
  theBoringFunction() { 
    return 'function 1'
  },anotherBoringFunction() {
    return 'function 2'
  },theMostBoringFunction() {
    return 'function 3'
  },}

我可以像这样分别向方法添加新的function

actions.anotherBoringFunction.log = function () {  
  return console.log(this.name)
}

actions.anotherBoringFunction.log() // logs anotherBoringFunction

它的工作原理就像是一种魅力,但是我在functions中有很多actions object,我需要为所有这些对象添加log()

我尝试遍历object添加method,如下所示:

// won't work key is typeof String :(
for (let key in actions) { 
  key.log = function () { 
    return console.log(this.name)
  }
}

很显然,它没有用,因为keystring的一种,因此无法向其中添加method。我该如何完成寻找的工作?我一直在尝试proxies,但到目前为止也没有运气。

编辑数字1:

添加一个可重复的示例,例如 here

let actions = { 
  theBoringFunction() { 
    return 'function 1'
  },}

// won't work key is typeof String :(
/* for (let key in actions) { 
  key.log = function () { 
    return console.log(this.name)
  }
} */

actions.anotherBoringFunction.log = function () {  
  return console.log(this.name)
}

actions.anotherBoringFunction.log() // logs anotherBoringFunction

解决方法

for (let key in actions) { 
  actions[key].log = function () { 
    return console.log(this.name)
  }
}