Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript动态函数_Javascript_Arrays_Function_Dynamic - Fatal编程技术网

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
现在我为什么没有想到这个?谢谢大家…天啊…现在你指出答案似乎很简单…:)@埃尔克兰斯-它的工作!非常感谢。如果你把你的评论作为回答,我会接受的。