gpt4 book ai didi

javascript - 从字符串创建对象(动态)

转载 作者:行者123 更新时间:2023-11-28 07:59:53 24 4
gpt4 key购买 nike

JavaScript 有没有办法从字符串创建对象?

这是一个例子:

配置对象:

var formatter = {
telephone : {
length : 10,
formatClass : "telephoneFormatter"
},
email : {
length : 255,
formatClass : "emailFormatter"
}
}

在字段创建中我可以使用以下方法:

function createFormatter(element){
if(formatter[element].formatClass == "telephoneFormatter"){
var formatObj = new telephoneFormatter()
}
if(formatter[element].formatClass == "emailFormatter"){
var formatObj = new emailFormatter()
}
return formatObj;
}

但我想动态创建一个对象,例如

function createFormatter(element){
return new formatter[element].formatClass();
}

构造函数不能用作 window 对象的属性,如“Dynamic Instantiation In JavaScript ”的解决方案中所示。类文件随页面一起加载,但我在 chrome 中找不到对象开发人员工具。因此我目前无法掌握这些类(class)。

为什么我需要这样做?应用程序动态加载表单,并且字段是根据精心设计的 JSON 创建的。创建表单时,会根据 JSON 的结构添加验证。我们永远不知道必须向某个字段添加什么验证。为了使整个事情复杂化,验证在区域设置上是不同的。

可以吗?

最佳答案

您可以创建一个自定义工厂函数,该函数检查 configurationObjectformaterClass 并初始化该类型的类。而不是将配置对象作为构造函数参数传递来初始化该对象。

注册可用的类,以便工厂函数不是多条件 block 。

var formatterClasses = {
'telephoneFormatter': telephoneFormatter,
'emailFormatter': emailFormatter
}

function formatterFactory(configurationObject)
{
return new formatterClasses[configurationObject.formatClass](configurationObject);
}

关于javascript - 从字符串创建对象(动态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com