Esto funciona:
import isValidDocument from './isValidDocument' class Test { constructor() { Object.assign(this, { isValidDocument}) } execute(person) { const evalResult = eval('this.isValidDocument(person)') console.log("Eval Result:", evalResult) } }pero esto no:
// ... execute(person) { const evalResult = eval('isValidDocument(person)') console.log("Eval Result:", evalResult) } // ... Básicamente, quiero poder llamar a las funciones sin usar this palabra clave.
¿Cómo puedo lograr eso?
Tengo reglas (expresiones js) almacenadas en una base de datos y la necesito para ejecutarlas dinámicamente, las funciones son fijas pero las expresiones pueden cambiar.
Ejemplo de expresión: isValidDocument(person) && person.age > 18
El usuario podrá cambiar las expresiones.
Sí, conozco el problema de seguridad y también acepto sugerencias para aislar el entorno. Actualmente, las expresiones se crean utilizando bloques en el frontend y luego el backend las convierte en declaraciones javascript reales, pero el plan es permitir que el usuario cree sus propias expresiones directamente.