Javascript动态函数
我在数组中创建了关联数组,并在对象方法中作为参数传递,如下所示:Javascript动态函数,javascript,arrays,function,dynamic,Javascript,Arrays,Function,Dynamic,我在数组中创建了关联数组,并在对象方法中作为参数传递,如下所示: myObject.method([ { id: "mystring", myfun: function(g) { return 'Value: ' + g.value + g.rows[0]['value']; }, a: "mysecondstring" }, id: "my
myObject.method([
{
id: "mystring",
myfun: function(g) {
return 'Value: ' + g.value + g.rows[0]['value'];
},
a: "mysecondstring"
},
id: "mystring_a",
myfun: function(g) {
return 'Value: ' + g.value + g.rows[0]['value'];
},
a: "mysecondstring_a"
}]);
在我的代码中有很多这样的例子,而且效果很好。g
的值未事先声明。现在我想在运行时更改myfun:function(g)…
,这要求我在调用myObject.method()之前声明我的关联数组。以下是我尝试过的:
myfun: new Function("g", "return 'Value: ' + g.value + " + my_dynamic_variable)
不好,然后尝试:
var fn = new Function("g", "return 'Value: ' + g.value + " + my_dynamic_variable)
与
还有这个
myfun: function(g) { return fn }
var fn = function(g) { return eval('Value: ' + g.value + my_dynamic_variable) }
还有这个
myfun: function(g) { return fn }
var fn = function(g) { return eval('Value: ' + g.value + my_dynamic_variable) }
与
执行myfun
代码后,我尝试过的所有null
都会出现g
。我猜变量g
必须绑定在myObject
的范围内,并且我不能在myObject范围之外定义它,但我不确定
有人知道这样做的方法吗?我是不是漏掉了?谢谢 您可以将该函数存储在变量中:
var f = function(g){return 'Value: '+ g.value + g.rows[0].value}
然后将引用传递给它:
myfun: f
这看起来确实是一个XY问题。真实世界的用例是什么?也许你需要考虑一个不同的数据结构……如果你把一个函数分配给键,它的参数在被调用时会被计算,例如,你可以像第一次分配它一样重新分配给一个新函数g
是在函数执行时计算的,它是一个参数。对了,您只需要存储该函数,并向它传递一个引用,var f=function(g){return'Value:'+g.Value+g.rows[0].Value}
,然后myfun:f
现在我为什么没有想到这个?谢谢大家…天啊…现在你指出答案似乎很简单…:)@埃尔克兰斯-它的工作!非常感谢。如果你把你的评论作为回答,我会接受的。