Я пытаюсь создать динамическую функцию в машинописном, которая вызывает уже существующую функцию, как:машинописи вызова в (анонимных) функциях динамического
let dynamicFunction = new Function("existingFunction(\"asdf\");");
function existingFunction(name: string) {
console.log(name);
}
При отладке в хромированной dynamicFunction выглядит следующим образом:
(function() {
existingFunction("asdf");
})
Когда я пытаюсь выполнить dynamicFunction, он говорит: «Uncaught ReferenceError: existingFunction не определен», что неудивительно, потому что это другая область, но как я могу называть exisitingFunction внутри dynamicFunction?
Любая помощь была бы принята с благодарностью!
Edit:
быть более точным: я получил машинопись файл, который содержит один модуль. Этот модуль экспортирует функцию, которая должна вернуть созданную динамическую функцию. Созданная динамическая функция затем используется в другом модуле, который фактически содержит exisitingFunction.
Я выбрал этот подход, потому что мне нужно преобразовать заданную строку в исполняемое условие, которое будет выполняться много раз.
Например: преобразовать строку "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);
}
}
состоянии .:
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;
}
I надеюсь, это объясняет мою проблему немного лучше.
Я не понимаю, что именно вам 'пытаюсь сделать, но, может быть, 'let dynamicFunction = existingFunction (" asdf ");' это то, что вы хотите. –