JavaScript 动态函数

标签 javascript arrays function dynamic

我在一个数组中有关联数组,该数组是在对象方法中创建并作为参数传递的,如下所示:

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/

相关文章:

javascript - 比较javascript中的两个字符串

javascript - 将 javascript 文件设为最小版本

ruby - 比较数组中多个散列的值

c - 在数组中输入 3 个字母,字母之间有空格

python - Python按顺序运行函数;如果失败,请停止

javascript 从 html 输入中删除 "disabled"属性

javascript - PDF.js 中 isEvalSupported 选项的安全含义是什么

java - 比较二维数组中行或列的元素 (Java)

objective-c - Objective-C 方法 如何

function - 如何定义动态嵌套循环python函数