I have an object of functions & I need to add a new, single method called log(it prints the method's name) to each function within the Object dynamically at runtime.
For instance, let's say this is my dynamic object of functions:
let actions = {
theBoringFunction() {
return 'function 1'
},
anotherBoringFunction() {
return 'function 2'
},
theMostBoringFunction() {
return 'function 3'
},
}
I can add a new function to the methods individually like so:
actions.anotherBoringFunction.log = function () {
return console.log(this.name)
}
actions.anotherBoringFunction.log() // logs anotherBoringFunction
It works like a charm, but I have many functions within the actions object & I need to add log() to all of them.
I have tried looping through the object & adding the method like so:
// won't work key is typeof String :(
for (let key in actions) {
key.log = function () {
return console.log(this.name)
}
}
Obviously, it didn't work cause key is a type of string so it cannot add a method to it. How could I accomplish what I'm looking for? I have been trying with proxies, but no luck so far either.
Edit Number 1:
I have added a reproducible, example here.
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