我正在尝试在 TypeScript 中创建一个动态函数,该函数调用一个已经存在的函数,例如:
let dynamicFunction = new Function("existingFunction(\"asdf\");");
function existingFunction(name: string) {
console.log(name);
}
在 chrome dynamicFunction 中调试时看起来像这样:
(function() {
existingFunction("asdf");
})
当我尝试执行 dynamicFunction 时,它显示“未捕获的 ReferenceError:existingFunction 未定义”,这并不奇怪,因为它是一个不同的范围,但我如何才能在 dynamicFunction 中实际调用exisitingFunction?
任何帮助将不胜感激!
编辑:
更准确地说:我有一个包含一个模块的打字稿文件。此模块导出一个函数,该函数应返回创建的动态函数。然后在另一个实际包含现有函数的模块中使用创建的动态函数。
我选择这种方法是因为我需要将给定的字符串转换为可执行条件,该条件将被执行多次。
例如:将字符串“VALUE==1”转换为:
function () {
return exisitingFunction("VALUE") == 1;
}
它应该是什么样子的一个简短示例:
解析器.ts:
export module Parser {
export function getFunction(expression: string) {
// Calculating condition...
let condition = "existingFunction(\"VALUE\") == 1;"
return new Function(condition);
}
}
条件.ts:
import { Parser } from "./parser";
class Condition {
// getting the DynamicFunction
private _dynamicFunction = Parser.getFunction("VALUE==1");
someFunctionInsideCondition() {
// Calling the DynamicFunction
this._dynamicFunction();
}
}
// Maybe this function should be somewhere else?
function existingFunction(name: string) {
console.log(name);
return 1;
}
我希望这能更好地解释我的问题。