通常从字符串类名称在Javascript中创建对象

时间:2017-01-13 01:10:21

标签: javascript

是否可以从类似于Java的字符串类名一般在Javascript中创建对象?也许某种类型的工厂?

我想要一个数据库来保存一个类名列表。每个类名将与用户友好名称相关联。这些用户友好的名称将填充菜单。当用户选择菜单项时,将检索相应的类名并创建类(对象)。我目前在Java中做类似的事情。

例如,而不是

var obj = new demo.view.CustomObject({});

我想要这样的东西

var obj = Factory.create(' demo.view.CustomObject',params);

谢谢

1 个答案:

答案 0 :(得分:1)

您正在寻找的是使用bracket notation来使用字符串访问对象属性。在这里,我创建了一个工厂方法,用于按字符串分割字符串。然后使用array reduce我进入constructor函数,最后创建对象。

function construct(constructorPath, params) {
  var constructorFunc = constructorPath.split('.')
    .reduce((prev, next) => prev[next], window)
  return new constructorFunc(params)
}

// Usage:
var obj = construct('demo.view.CustomObject', someParams)