我有一个函数,它接受一个字符串对象名称,我需要函数创建一个与该字符串值相同名称的新对象实例。
例如:
function Foo(){}
function create(name){
return new name();
}
create('Foo'); //should be equivalent to new Foo();
虽然我知道可以通过eval实现,但尽量避免使用它。如果有人对以下问题有替代方案,我也很感兴趣。
我有一个数据库和一组(使用经典的面向对象方法)类,大致上为每个表定义了通用操作。(与使用PHP的Zend_Db非常相似)。由于一切都是异步的,基于上一个任务结果执行任务可能会导致代码缩进很深。
var table1 = new Table1Db();
table1.doFoo({
success:function(){
var table2 = new Table2Db();
table2.doBar({
notFound:function(){
doStuff();
}
});
}
});
显而易见的解决方案是创建帮助方法,抽象代码的异步性。
Db.using(db) //the database object
.require('Table1', 'doFoo', 'success') //table name, function, excpected callback
.require('Table2', 'doBar', 'notFound')
.then(doStuff);
这样会简化问题。但是问题在于,我需要能够创建表类,其名称可以从传递给 require
的第一个参数中推断出来,这就导致了上述问题...