使用Function对象node.js调用函数
我必须使用string来执行函数。 所以我创build了一个新的function,我把string。 它工作,但不是当我想调用另一个模块中的特定function:
var mymodule = require('./mymodule');
…
mymodule.function(a, b); //Works var functionTest1= new Function('var a = 2; console.log(a*a);'); functionTest1(); //Works var functionTest2= new Function('mymodule.function(a, b)'); functionTest2(); //Doesn't work (error console : mymodule is not defined)
我究竟做错了什么? 还有其他方法可以做到吗?
请试试这个:
var functionTest3 = new Function('mymodule','a','b', 'mymodule.function(a, b)'); functionTest3(mymodule, a, b);
使用Function构造函数创build的函数不会为其创build上下文创build闭包; 他们总是在全球范围内创build。 运行它们时,它们只能访问自己的局部variables和全局variables,而不能调用函数构造函数的作用域。
更多阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function