我有一個功能,需要一個字符串對象的名字,我需要的功能,以創建具有相同的名稱作爲字符串動態對象創建
例如值的對象的新實例,
function Foo(){}
function create(name){
return new name();
}
create('Foo'); //should be equivalent to new Foo();
雖然我知道這將是可能的通過評估,這將是很好的嘗試和避免使用它。我如果任何人有一個替代的想法也很感興趣的問題(下)
我有一個數據庫和一套(使用傳統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
這導致我上面的問題...
首先,謝謝你的迴應。像往常一樣,在回顧一個答案後,我覺得有點愚蠢,因爲錯過了一些(回想起來相當明顯)的東西。在這種情況下,字符串更容易,但是通過構造函數(我不知道可以這樣做)看起來更簡潔,更重要的是清晰。我並不是反對使用eval,並且正如你所說的那樣,它有它的位置,但是經驗告訴我,如果我認爲我需要使用它的時候有99%的時間我不懂這門語言。 (這是其中的一次)。 – Yacoby 2010-07-09 22:51:15
@Yacoby說得好! :)尤其是最後的句子。我希望大家都會這樣想。 – galambalazs 2010-07-09 22:53:32
這是一個很好的答案。學習了關於JavaScript的新內容!謝謝:) – rossipedia 2010-07-09 23:32:27