我的函数将模型名称作为字符串,我需要根据其名称创建对象的新实例。
例如:
modelName = 'MockA';
model = new modelName();
这是不可行的。在PHP我会使用
model = new $$modelName
提前致谢
答案 0 :(得分:4)
如果import csv
with open("fileName.csv") as f:
reader=csv.reader(f)
for row in reader:
print row
在全球范围内,您可以使用:
MockA
如果没有,那么您应该重新考虑存储模型的方式,例如。以模型为对象:
var model = new window[modelName]();
并访问
var my_models = {
MockA: function() {},
MockB: function() {}
}
答案 1 :(得分:0)
您可以使用object factory
或bracket notation
。
代码示例:
// First example: Use a Factory
var MockA = function() {
this.sayHello = function() {
console.log('Hi from MockA ');
};
},
MockB = function() {
this.sayHello = function() {
console.log('Hi from MockB ');
}
},
factory = function(type) {
var obj;
switch (type) {
case 'MockA':
obj = new MockA();
break;
case 'MockB':
obj = new MockB();
break;
}
return obj;
}
var objA = factory('MockA');
objA.sayHello();
var objB = factory('MockB');
objB.sayHello();
// Second example: Using bracket notation
var models = {
BaseMockA: {
sayHello: function() {
console.log('Hi from BaseMockA ');
}
},
BaseMockB: {
sayHello: function() {
console.log('Hi from BaseMockB ');
}
}
};
var baseObjA = Object.create(models['BaseMockA']);
baseObjA.sayHello();
var baseObjB = Object.create(models['BaseMockB']);
baseObjB.sayHello();