全局变量-用新函数构造的javascript函数不能调用其他函数
global variables - javascript Function constructed with new Function cannot call other functions
在android上使用原生React。然而,我认为我的问题适用于任何javascript环境。
我正在根据服务器发送的文本构建一个函数(这是有充分理由的)。
function helper_called_from_dynamic (arg1)
{
console.log('helper called ',arg1);
}
export class MyInvoker
{
constructor ()
{
this._funcProps={};
}
initialize ( item )
{
this._funcProps["df1"]=new Function (["inArg1"],item.fnBody);
}
call_dynamic_func (fnName,arg1)
{
return this._funcProps[fnName](arg1);
}
}
fnBody具有以下内容:"return helper_called_from_dynamic(inArg1);"
我通过MyInvoker调用的是以下
let invInst = new MyInvoker();
let item={fnBody:"return helper_called_from_dynamic(inArg1); "};
invInst.initialize(item);
invInst.call_dynamic_func("df1","somearg");
我收到一个错误(来自react native,但我再次怀疑它在所有其他javascript环境中都很常见):
找不到变量:helper_called_from_dynamic
有可能让它发挥作用吗?这是否允许动态创建的函数调用其他函数?还是我必须求助于"eval"?
@Bergi暗示的解决方案对我有效。建议
使参数的仅评估代码调用方法
这就是我所做的,而且奏效了。我应该在发帖前考虑一下,但当时我没有想到。我没有将helper函数设置为全局函数,而是将其附加到类的一个实例,并将该实例作为参数传递给动态函数。
以下是的详细信息
export class MyHelpers
{
helper_called_from_dynamic (arg1)
{
console.log('helper called ',arg1);
}
}
export class MyInvoker
{
constructor ()
{
this._funcProps={};
this._myHelpers=new MyHelpers();
}
initialize ( item )
{
this._funcProps["df1"]=new Function (["inArg1","iHelper"],item.fnBody);
}
call_dynamic_func (fnName,arg1)
{
return this._funcProps[fnName](arg1,this._myHelpers);
}
}
然后,动态函数的主体现在可以访问helper_called_from_dynamic:
let invInst = new MyInvoker();
let item={fnBody:"return iHelper.helper_called_from_dynamic(inArg1); "};
invInst.initialize(item);
invInst.call_dynamic_func("df1","somearg");
相关文章:
- 从函数JavaScript返回不可变数组/对象
- 将对象传递给函数.JavaScript
- 如何定义const函数javascript(语法糖)
- 新的日期函数javascript
- TypeError:this.getAttribute不是一个函数-javascript
- 从函数javascript发送变量
- 扩展自容器函数Javascript
- 从内部函数javascript内部分配外部函数的对象
- 使用函数JavaScript中的函数
- 在这里使用回调函数(JavaScript)有什么好处吗
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 将“e”传递给一个新函数 - javascript
- 调用函数中的一个函数——Javascript
- 传递的变量不适用于我的函数-Javascript
- 如何将类方法设置为等于多个函数?-Javascript
- 显示php中的函数javascript
- 如何使用php代码创建函数Javascript弹出框
- 未调用的外部函数-javascript
- 如何在类中运行函数.Javascript
- 关闭mouseover上的一个函数——Javascript,jQuery