我现在正在编写一个应用程序,该应用程序要求用户可以从预定义的对象列表中选择对象类型,或者通过前端系统生成新的兄弟对象类型。所以它看起来有点像下面的例子
`
class predefinedClass extends someParentClass{
...
}
//Some user defined class
class dynamicClass extends someParentClass{
...
}
`那么,有谁有生成动态类的经验吗?我有一种预感,功能方法可能比OOP方法容易,但我认为值得一试。
发布于 2018-11-28 20:34:38
因此,我的问题的答案需要一些背景知识。所以我有4个不同的基类,在这个例子中,让我们把它们称为A,B,C,D类,这些类经过测试并被证明是有效的。然后,我选择了这些类,并将它们转换为这样的JSON反对。
A类
{
"props": {
"name": "Default Name",
"type": "A"
},
"functions": [
{
"name": "hello",
"params": [],
"body": ""
}
]
}完成这部分之后,我使用JSON.parse方法将其导入到一个对象文本中。这使我能够将函数解析为表单字段,并为不同的逻辑语句提供下拉菜单。我将其限制在if/ but条件语句、相等语句和返回语句上,因为这些语句是大多数用户需要访问的最大的三种语句,但我添加了一个预先模式,以防需要编写更自定义的内容。
在编辑函数的属性之后,您将得到类似的内容。
类A编辑
{
"props": {
"name": "Default Name",
"type": "A_Edited"
},
"functions": [
{
"name": "hello",
"params": ["name"],
"body": "return `Hello, ${this.props.name}, my name is ${name}!`;"
}
]
}在从预先存在的“类”创建了这个新的“类”之后,您可以使用javascript操作符并用大括号包装这个类的新实例。
但是,如何从基于文本的函数变为绑定到新类的实际函数呢?这是简单而有效的解决办法。类工厂
function ClassFactory(class){
class.functions.forEach((funct)=>{
var temporaryFunction = new Function(funct.params, funct.body);
class[funct.name] = temporaryFunction.bind(class);
})
return class;
}JavaScript有一个函数对象,它有两个参数。函数参数和该函数的主体。这个脚本要做的是,接受这个新创建的函数,并将其绑定到类中的一个新属性,该属性以原始函数的名称命名。在函数绑定到该类之后,它将被返回并查看!您有一个类,它具有可以使用的活动函数。
所以下面写了一个有效的例子
var AEdited = ClassFactory(JSON.parse("/path/AEdited.json"));
var AEditedInstance = {...AEdited};
AEditedInstance.name = "Frank"
console.log(AEditedInstance.hello("Sam"));
/*
This would log "Hello Frank, I'm Sam"
*/请告诉我,如果您能想出任何可以改进这一点的方法,但我想不出更好的方法来动态创建自定义类,然后将它们推送到静态格式以供以后使用。
https://stackoverflow.com/questions/52489601
复制相似问题