Javascript 通过函数对象循环&;向对象中的每个函数添加一个新方法
我有一个Javascript 通过函数对象循环&;向对象中的每个函数添加一个新方法,javascript,function,loops,object,proxy,Javascript,Function,Loops,Object,Proxy,我有一个对象的函数&我需要在运行时向对象中的每个函数动态添加一个名为log(它打印方法的新的方法 例如,假设这是我的函数的动态对象: let actions = { theBoringFunction() { return 'function 1' }, anotherBoringFunction() { return 'function 2' }, theMostBoringFunction() { return 'function 3'
对象
的函数
&我需要在运行时向对象
中的每个函数
动态添加一个名为log
(它打印方法
的新的方法
例如,假设这是我的函数的动态对象
:
let actions = {
theBoringFunction() {
return 'function 1'
},
anotherBoringFunction() {
return 'function 2'
},
theMostBoringFunction() {
return 'function 3'
},
}
我可以单独向方法添加一个新的函数
,如下所示:
actions.anotherBoringFunction.log = function () {
return console.log(this.name)
}
actions.anotherBoringFunction.log() // logs anotherBoringFunction
它就像一个符咒,但我在操作对象中有许多函数
&我需要将日志()
添加到所有函数中
我已经尝试过循环使用对象
&添加方法
,如下所示:
// won't work key is typeof String :(
for (let key in actions) {
key.log = function () {
return console.log(this.name)
}
}
显然,它不起作用,因为键
是字符串
的一种类型,所以它不能向其中添加方法
。我怎样才能完成我想要的?我一直在尝试,但到目前为止也没有运气
编辑编号1:
我添加了一个可复制的示例
let actions={
BoringFunction(){
返回“函数1”
},
另一个BoringFunction(){
返回“函数2”
},
mostboring函数(){
返回“函数3”
},
}
//无效键为字符串的类型:(
/*对于(让输入操作){
key.log=函数(){
返回console.log(this.name)
}
} */
actions.anotherBoringFunction.log=函数(){
返回console.log(this.name)
}
actions.anotherBoringFunction.log()//记录anotherBoringFunction
actions[key]。log=
,key
是属性名(一个字符串),在
循环中,通过键-你想为
中的.@RobinZigmond对于
中的
的
的值使用(让对象的fn.values(actions))fn.log=/*…*/,这确实会起作用。我不确定我是否完全理解您的意图。您可能会创建一些行为类似的讨厌对象,但通常情况下如果是您的意图,那么更改为arrow函数可能会适得其反。如果您的意思是执行赋值,那么Object.values(actions).forEach(v=>v.log=/*…*/)
,但我更喜欢上面提到的,因为…of
,这取决于你的意图-你目前正在做的是为每个属性创建一个新的log
函数,而函数本身使用this
来记录相关的名称。因此,你可以对所有属性使用相同的log
函数em(只有一个函数),但我不知道这段代码的意图和用例是什么。
for (let key in actions) {
actions[key].log = function () {
return console.log(this.name)
}
}