私は"AppNamespace.SomeObject.ClassName"
などの刺青があり、文字列が実際のコンストラクタ関数を表していることを知っていますが、声明の中でvar foo = new AppNamespace.SomeObject.ClassName
のように? eval
を伴うまたは文字列とループを分割する必要がありません、より良い解決策があるかどうJavaScriptでの名前空間、文字列表現のコンストラクタ関数を取得する最も良い方法
var parts = "AppNamespace.SomeObject.ClassName".split(".")
var foo = new (window[parts[0]][parts[1]][parts[2]])
が、私は思ったんだけど:よう
var s = "AppNamespace.SomeObject.ClassName"
var foo = new (eval(s))
か何かを:
私が行うことができますその部分を通して。誰にもアイデアはありますか?そうでない場合は、私が提案した2つのソリューションに基づいて、それぞれの賛否両論は何ですか?
Array#reduceは、現在のブラウザ環境では利用可能な在庫が限られています。https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/Reduce – dfreeman
@dfreemanはい、どんなブラウザでも簡単にシミングできます。 – alex
そして、それは価値があるため、私のアプリケーションでunderscore.jsを使用しています –