从字符串动态实例化一个类

问题描述

下午好,开发人员

我目前正在尝试开发一个函数,该函数根据它作为参数接收的字符串的值动态实例化业务对象。我知道这可以像以前一样在JavaScript中完成,并且可以肯定的是,在SAPUI5应用程序中遇到此问题后,我什至在Visual Studio Code中再次对其进行了测试。我函数的代码看起来像这样:

        createObject: function (sObject) {
    
    var newObject = new this[sObject]();
    // var newObject = new [sObject](); I also tried this way.
    
    };

为了测试此功能,sObject字符串当前包含硬编码值“ Order”,并且我将我的Order.js对象导入文件中,在此文件中我试图动态实例化此对象。无论我尝试什么,在调试代码时都会不断收到此错误:

TypeError: this[sObject] is not a constructor

我想知道你们中的某些人以前是否曾尝试过类似的尝试,并且可能能够指出正确的方向。即使我有解决此问题的方法,但由于我打算在几种不同的情况下使用这种方法,所以我学会了如何动态地进行此操作也非常好。我期待着您的来信!

解决方法

从字符串中实例化对象,然后从用户可以提供的参数中实例化它,这是一种非常不安全的做法。如果对象有限,那么使用较大的switch语句会更安全。

switch(name) {
   "objA": return new ObjA();
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...