下午好,开发者朋友们,
我目前正在尝试开发一个函数,该函数基于作为参数接收的字符串的值动态实例化业务对象。我知道这可以在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
我想知道你们中是否有人以前尝试过类似的东西,也许可以给我指出正确的方向。即使我有办法解决这个问题,但如果我学会如何动态地做到这一点,那就太好了,因为我正计划在几个不同的场景中使用这种方法。我期待着从你那里读到!
发布于 2020-08-13 16:47:42
从字符串实例化对象是一种非常不安全的做法,而从用户可以提供的参数实例化对象则是一种残暴的做法。如果你有一个有限的对象集,使用一个大的switch语句要安全得多。
switch(name) {
"objA": return new ObjA();
}
https://stackoverflow.com/questions/63398847
复制相似问题