javascript - 如何在 JavaScript 中动态创建类实例?
问题描述
假设我有一组已定义的类
class Dick { };
class Duck { };
class Dear { };
const arr = [Dick, Duck, Dear];
我也有一个对象
const obj = {};
我想定义一个函数,该函数将获取该对象和该数组并应用一些魔法,然后返回一个像这样的新对象。在这个例子中,这个新创建的对象具有像上面类名这样的属性(每个的第一个字母变成小写),每个属性都有一个该类实例的值。可以用 JavaScript 做吗?
obj = magicFunction(obj, arr);
console.log(obj)
/*
{
dick: <instance of the class Dick>,
duck: <instance of the class Duck>,
dear: <instance of the class Dear>
...
}
*/
笔记:
<instance of the class ... > is NOT a string
,它是一个真实的实例。
解决方案
也许这就是你要找的?
class Dick { };
class Duck { };
class Dear { };
const dict = { Dick, Duck, Dear };
function magicFunction(obj={}, classes) {
let results = {};
for (let key in classes) {
results[key.toLowerCase()] = new classes[key](obj)
}
return results;
}
let obj = {};
obj = magicFunction(obj, dict);
console.log(obj);
使用解构将 arr 更改为字典以保留类名。
原始obj
的被传递给每个类的构造函数;允许您一次用相同的值初始化它们!
推荐阅读
- kotlin - 如何从 Kotlin 中的 .txt 文件中选择随机行
- visual-studio - 参数化 Visual Studio 模板项目的目标框架
- vue.js - 是什么阻止了某人利用路由保护 vue js 应用程序
- r - 如何最好地处理 R 中的未知对象名称
- python - AWS SageMaker:使用托管在 S3 中的经过训练的模型创建终端节点
- javascript - 下一个 js:在访问 '/blogs/' 时打开 index.js
- bash - 如何在 sed 命令中连接数组中的字符串?
- wpf - 在 WPF DataGrid 列的第一行放置一个按钮
- c# - 设置范围弹出表单属性数据
- html - 内容减少/增加的多个 div 高度上的 JQuery 动态转换