2017-08-01 23 views
1

JS6,瀏覽器如何通過字符串名稱創建類的實例?我也嘗試爲這些目的使用`window`。

如何通過字符串名稱創建類的實例?例如,我有一個字符串Foo,我需要創建一個Foo類的實例。我不想寫這樣的結構:

let className = getClassName(); // returns 'Foo', `Stuff` or other 
... 
let item = null; 

if(`Foo` == className){ 
    item = new Foo(); 
} 
else if(`Stuff` == className){ 
    item = new Stuff(); 
} 

UPD

我試着打通window對象訪問我的類的構造函數,但我有問題:它返回undefined。但我的類存在和瀏覽器知道這一點:

enter image description here

+0

它是瀏覽器的JavaScript,或nodejs? – Val

+0

如果它在瀏覽器上下文中運行,試試'new window ['className']()'。 – Phylogenesis

+0

這是瀏覽器javascript –

回答

1

你想要做的是你應該做的,在我看來。這是在運行時知道對象類型時實例化對象的標準方法,稱爲工廠方法模式。

通過使用封裝對象創建的工廠對象,您應該避免在代碼中的任何地方重複此操作。這個工廠對象將有一個將類型名稱作爲其參數的方法。

相關問題