我在一个数组中有关联数组,该数组是在对象方法中创建并作为参数传递的,如下所示:
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: fn(g)
还有这个
myfun: function(g) { return fn }
还有这个
var fn = function(g) { return eval('Value: ' + g.value + my_dynamic_variable) }
与
myfun: fn
一旦执行myfun
代码,我尝试过的所有操作都会为g
显示null
。我猜测变量 g
必须绑定(bind)在 myObject
范围内,并且我无法在 myObject 范围
之外定义它,但是我不确定。
有人知道有什么方法可以做到这一点吗?我在这里错过了标记吗?谢谢!
最佳答案
您可以将该函数存储在变量中:
var f = function(g){return 'Value: '+ g.value + g.rows[0].value}
然后传递对其的引用:
myfun: f
关于JavaScript 动态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25318868/