如果我有一個像"AppNamespace.SomeObject.ClassName"
這樣的sting,並且我知道字符串表示和實際的構造函數,那麼使用它的最佳/推薦方法是什麼在像var foo = new AppNamespace.SomeObject.ClassName
這樣的聲明中?在JavaScript中獲取名稱空間,字符串表示的構造函數的最佳方法
我可以這樣做:
var s = "AppNamespace.SomeObject.ClassName"
var foo = new (eval(s))
或喜歡的東西:
var parts = "AppNamespace.SomeObject.ClassName".split(".")
var foo = new (window[parts[0]][parts[1]][parts[2]])
,但我不知道是否有更好的解決方案,不涉及eval
或具有分割字符串和循環通過它的部分。有沒有人有任何想法?如果沒有,基於我提出的兩種解決方案,每種解決方案的優缺點是什麼?
Array#reduce在當前瀏覽器環境中的可用性有限:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Reduce – dfreeman 2012-04-07 01:55:05
@dfreeman是的,但它可以在任何瀏覽器中輕鬆地擦除。 – alex 2012-04-07 02:07:36
對於它的價值,我在我的應用中使用了underscore.js – 2012-04-07 02:10:47