问题描述
我有一个object
中的一个functions
,我需要添加一个名为method
的新的单个log
(它会显示method
的名称) function
中的每个Object
在运行时动态地移动。
例如,假设这是我的object
的动态functions
:
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
它的工作原理就像是一种魅力,但是我在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)
}
}
很显然,它没有用,因为key
是string
的一种,因此无法向其中添加method
。我该如何完成寻找的工作?我一直在尝试proxies,但到目前为止也没有运气。
编辑数字1:
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)
}
}