使用Function对象node.js调用函数

时间:2017-10-18 14:25:32

标签: node.js

我必须使用字符串来执行函数。所以我创建了一个新函数,我把字符串放入其中。它工作但不是我想在另一个模块中调用特定函数时:

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)

我做错了什么?还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

请试试这个:

var functionTest3 = new Function('mymodule','a','b', 'mymodule.function(a, b)');
functionTest3(mymodule, a, b);
  

使用Function构造函数创建的函数不会创建闭包   他们的创作背景;它们总是在全球范围内创造的   范围。在运行它们时,它们只能访问自己的   局部变量和全局变量,而不是来自范围的变量   函数构造函数被调用。

更多内容请阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function