设想
我有一个具有很多属性和方法的对象,并假设它存储在Global.Framework
. 现在,我有另一个名为的对象User
,我想Global.Framework
通过克隆.Framework
to来为其提供访问权限User
。
但是,User
也有一个名为Name
, 的属性(存储在 中User.Name
),它需要作为第一个参数透明地传递给每个框架的方法。
示例代码
例如,在 的方法声明中Global.Framework
,可能有类似
Global.Framework = {
methodOne: function(name, a, b, c) { /* do something */ },
methodTwo: function(name, a) { /* do something */ },
propertyOne: 100,
propertyTwo: "me"
}
但是,我希望这些方法像这样暴露User.Framework
:(属性只是克隆。它们不需要任何额外的处理)
User.Framework = {
methodOne: function(a, b, c) {
return Global.Framework.methodOne(User.Name, a, b, c);
} (...)
问题
显然,由于方法的数量Framework
会发生变化,甚至可能是它们的参数,我无法在克隆过程中手动将它们一一声明。
到目前为止我尝试过的
我查看了如何动态获取参数并发现了这一点:How to get function parameter names/values dynamic from javascript
但我不确定如何实现这一点,最好不要使用太多的处理资源。这就是我的想法:
- 遍历
Framework
对象中的每个属性,如果不是函数,则克隆它,或者 - 获取函数的参数列表
- ?? 将调用重写为
return functionBeingLooped(User.Name, [the rest of the arguments])
我被困在第 3 步,我有限的 Javascript 知识让我除了eval
(这是毫无疑问的)之外什么都没有提醒我。有没有办法做到这一点?