【发布时间】:2020-04-07 04:16:05
【问题描述】:
我有一个对象,其中包含可能嵌套很深的函数(可能比这更多,所以我需要一个可以在任何深度工作的解决方案):
x = {
a: function() { console.log ("original function 1") },
b: {
c: {
d: function() { console.log ("original function 2") }
}
}
}
我希望能够将函数的键路径作为参数传递给另一个函数,并用新函数替换原来的函数:
g = function( functionAddress ) {
functionAddress = function() { console.log( "replacement function" )}
}
这样执行后:
g("x.b.c.d");
x.b.c.d() // replacement function
g("x.a");
x(a) // replacement function
我已经能够使用 split、shift 和 reduce 处理参数,因此我可以访问指定地址的函数,如下所示:
keypath = x["b"]["c"]["d"]
但如果我尝试使用 newFunc 替换该位置的函数,它只会替换 keypath 的值,而不是该地址的函数。
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: javascript function object nested javascript-objects