【发布时间】:2010-07-09 22:15:10
【问题描述】:
我有一个接受字符串对象名称的函数,我需要该函数来创建一个与字符串值同名的对象的新实例
例如,
function Foo(){}
function create(name){
return new name();
}
create('Foo'); //should be equivalent to new Foo();
虽然我知道这可以通过 eval 实现,但最好尽量避免使用它。如果有人对此问题有其他想法,我也很感兴趣(如下)
我有一个数据库和一组(使用经典的 OO 方法)类,每个表大约有一个类,用于定义该表上的常见操作。 (对于那些使用 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 的第一个扩充中推断出来,这导致我遇到上述问题...
【问题讨论】:
标签: javascript dynamic object