【发布时间】:2016-12-21 11:24:12
【问题描述】:
我正在尝试在 TypeScript 中创建一个动态函数,该函数调用一个已经存在的函数,例如:
let dynamicFunction = new Function("existingFunction(\"asdf\");");
function existingFunction(name: string) {
console.log(name);
}
在 chrome dynamicFunction 中调试时看起来像这样:
(function() {
existingFunction("asdf");
})
当我尝试执行 dynamicFunction 时,它显示“未捕获的 ReferenceError:existingFunction 未定义”,这并不奇怪,因为它是不同的范围,但我如何才能在 dynamicFunction 中实际调用 exisitingFunction?
任何帮助将不胜感激!
编辑:
更准确地说:我有一个包含一个模块的打字稿文件。 此模块导出一个函数,该函数应返回创建的动态函数。 创建的 dynamicFunction 然后在另一个实际包含现有函数的模块中使用。
我选择这种方法是因为我需要将给定的字符串转换为可执行的条件,该条件将被执行多次。
例如:将字符串“VALUE==1”转换为:
function () {
return exisitingFunction("VALUE") == 1;
}
它应该是什么样子的一个简短示例:
parser.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;
}
我希望这能更好地解释我的问题。
【问题讨论】:
-
我不明白你到底想做什么,但也许
let dynamicFunction = existingFunction("asdf");是你想要的。
标签: javascript typescript dynamic-function