如何在object名称的基础上创建javascript对象的实例
How to create instance of javascript object on the basic of Object name
我有3个js文件。
object.js固定在对象后面,
function User()
{
//Some property
}
function Employee()
{
// Some Property
}
等
和There Framework.js,我们需要在其中创建一个方法CreateInstance(objectname)。
我们需要以这样一种方式创建这个方法,即使用createinstance方法的人只需要传递他需要的实例的objectname。因此,如果将来在object.js中添加任何对象,createinstance应该能够在ObjectName的基础上创建该对象的实例,而无需修改createinstance方法。
function CreateInstance(objectName)
{
//logic for creating instance of object.
}
这可能吗?怎么可能?
如果您想通过提供字符串来创建实例(这就是我解释问题的方式),您可以始终使用eval
:
function CreateInstance(objectName) {
return eval("new " + objectName + "()");
}
eval
的合法使用。
function CreateInstance(objectName) {
return new (eval(objectName))();
}
如果您希望安全,可以添加一些验证以确保objectName
是一个单词,eval(objectName)
是一个函数。
只要在窗口范围内定义了用户和员工,以下内容就应该有效:
function CreateInstance(objectName)
{
if (typeof window[objectName] == 'function') {
return new window[name];
}
// return null or throw an error ...
}
var user = CreateInstance('User');
console.log(user instanceof User); // true
var employee = CreateInstance('Employee');
console.log(employee instanceof Employee); // true
为什么不直接使用new
运算符?你现在可以这样使用:
var user = new User();
alert(user instanceof User); // Shows "true"
我认为您正在尝试使用类似Factory Pattern的东西。做这件事有不同的方法。但根据上面的说法,你似乎有点错了。
Javascript是一种基于函数的语言,其中函数表示对象本身(换句话说,是类结构)。
一旦编写了一个函数,就已经创建了一个对象
您始终可以使用new关键字创建对象。
直接使用new关键字的原因是"it a Global Considered Lang"。即,如果对象在系统中的任何时间引用,则可以从任何地方全局访问该对象
您不需要(也不应该使用)eval
。
var myconstructors = {
User: function(){/*...*/},
Employee: function(){/*...*/}
};
var createinstance = function(name){
return new myconstructors[name]();
};
相关文章:
- 如何在大型nodeJS代码的基础上逐步引入typescript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 在页面上创建多个元素,而不是一个发生更改的元素
- 如何在sap.m.Image元素上创建可点击区域
- 如何在DynamoDB上创建本地具有GlobalSecondaryIndex的表
- 我想在我的准备列表项上创建一个按钮
- 我想在值的基础上选中复选框
- 用javascript在对象上创建不存在的方法
- 如何在标题上创建弹出框,当点击关闭按钮时,不使用jquery或php在网站中显示
- 在Javascript中解析json并在html上创建表
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 如何在ExtJS网格上创建带有标签的文本字段
- 使用jstl c:forEach在迭代jsp bean上创建javascript json对象
- 如何使用javascript在嵌入式youtube视频上创建可点击的时间戳链接
- 按特定顺序在Trello上创建牌
- 如何在多变量比较的基础上添加ng类
- 在原始对象的基础上创建新对象的最简单方法,但没有几个字段
- 如何在object名称的基础上创建javascript对象的实例
- 如何在Vue.js中现有的基础上创建新的组件数据
- 如何在提交第一个表单的基础上动态创建表单