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
对象的属性,如#34; Dynamic Instantiation In JavaScript"的解决方案中所示。类文件随页面一起加载,但我无法在chrome中找到对象开发人员的工具。因此我目前没有关于课程的句柄。
为什么我需要这样做?应用程序动态加载表单,并从精心设计的JSON创建字段。在创建表单时,将根据JSON的结构添加验证。我们永远不知道必须在某个字段中添加哪些验证。为了使整个事物复杂化,区域设置的验证是不同的。
能做到吗?
答案 0 :(得分:0)
您可以创建一个自定义工厂函数来检查configurationObject
s formaterClass
,然后初始化该类型的类。而不是将配置对象作为构造函数参数传递给初始化对象。
注册可用的类,因此工厂函数不是多条件块。
var formatterClasses = {
'telephoneFormatter': telephoneFormatter,
'emailFormatter': emailFormatter
}
function formatterFactory(configurationObject)
{
return new formatterClasses[configurationObject.formatClass](configurationObject);
}