首页 > 解决方案 > 循环遍历函数对象并为对象中的每个函数添加一个新方法

问题描述

我有一个object&functions我需要在运行时动态添加一个新的单个调用methodlog它打印method' 的名称)到每个动态。functionObject

例如,假设这是我的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 objectlog()

我试过循环object& 添加method类似的东西:

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

显然,它不起作用,因为它key是一种类型,string所以它不能添加method到它。我怎样才能完成我正在寻找的东西?我一直在尝试代理,但到目前为止也没有运气。

编辑编号 1:

我在这里添加了一个可重现的示例。

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

  anotherBoringFunction() {
    return 'function 2'
  },

  theMostBoringFunction() {
    return 'function 3'
  },
}

// 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

标签: javascriptfunctionloopsobjectproxy

解决方案


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

推荐阅读