React/Javascript - 从字符串执行 Javascript 代码的概念方法
React/Javascript - Conceptual approach for executing Javascript Code from string
目前我在申请中遇到概念问题。
用户应该能够在我的 react/redux 应用程序中创建 Javascript class,并且我的应用程序应该能够执行编写的 javascript 代码。
例如,用户 A 写道:
class PredefinedClassName {
constructor(a) {
this.a = a;
}
getSomething(parameterFromOutside) {
return this.a * parameterFromOutside;
}
}
这个 class 然后在某些数据库中保存为字符串(重要)。
接下来我想加载这个 class(再次作为字符串)并执行以下操作:
- 创建此 class 的实例,它包含在字符串中...(如何?)
- 在实例上调用 "getSomething" 方法并将我自己的参数传递给该方法(如何?)
由于这是一个非常罕见的用例,因此只有很少的文献,几乎没有库。
站点说明:最重要的是,我还应该检查语法和运行时错误,但我认为这是下一步,所以首先我想解决基本部分。
对于如何解决这个概念性问题,您有什么想法吗?
谢谢和问候!
创建存储在字符串中的 class 实例实际上非常简单,浏览器基本上在后台执行此操作。您需要做的就是:
// Save your javascript class in a string variable:
const classString = `class PredefinedClassName {
constructor(a) {
this.a = a;
}
getSomething(parameterFromOutside) {
return this.a * parameterFromOutside;
}
}`;
// Create an instance of this class with eval() function, by appending the original class declaration before the instantiation, and do not return the newly created class inside the eval, just create it like so:
const customParameterValue = 5;
const instanceOfClass = eval(classString + `new PredefinedClassName(${customParameterValue})`)
// Now you can use 'instanceOfClass' as usual:
instanceOfClass.getSomething(10)
欢迎在评论中提出任何说明:)
目前我在申请中遇到概念问题。
用户应该能够在我的 react/redux 应用程序中创建 Javascript class,并且我的应用程序应该能够执行编写的 javascript 代码。
例如,用户 A 写道:
class PredefinedClassName {
constructor(a) {
this.a = a;
}
getSomething(parameterFromOutside) {
return this.a * parameterFromOutside;
}
}
这个 class 然后在某些数据库中保存为字符串(重要)。
接下来我想加载这个 class(再次作为字符串)并执行以下操作:
- 创建此 class 的实例,它包含在字符串中...(如何?)
- 在实例上调用 "getSomething" 方法并将我自己的参数传递给该方法(如何?)
由于这是一个非常罕见的用例,因此只有很少的文献,几乎没有库。
站点说明:最重要的是,我还应该检查语法和运行时错误,但我认为这是下一步,所以首先我想解决基本部分。
对于如何解决这个概念性问题,您有什么想法吗?
谢谢和问候!
创建存储在字符串中的 class 实例实际上非常简单,浏览器基本上在后台执行此操作。您需要做的就是:
// Save your javascript class in a string variable:
const classString = `class PredefinedClassName {
constructor(a) {
this.a = a;
}
getSomething(parameterFromOutside) {
return this.a * parameterFromOutside;
}
}`;
// Create an instance of this class with eval() function, by appending the original class declaration before the instantiation, and do not return the newly created class inside the eval, just create it like so:
const customParameterValue = 5;
const instanceOfClass = eval(classString + `new PredefinedClassName(${customParameterValue})`)
// Now you can use 'instanceOfClass' as usual:
instanceOfClass.getSomething(10)
欢迎在评论中提出任何说明:)