2016-09-29 112 views
0

有沒有基於ES6中的變量從類中實例化新對象的方法?從變量中實例化ES6類

這是我的情景:

class SomeClass { 
    hasMany(what){ 

     var instance = new window[what](); 

     var owned_objects = instance.allOwnedBy(this.constructor.name, self.id); 

     return instance; 
    } 
} 

然而,這將返回Uncaught TypeError: window.Group is not a constructor(…)

的的hasMany坐落在一個類中。所以我想要實現的是該類中的函數應該基於作爲變量傳遞的那個類的名稱來實例化另一個類,然後返回該實例。

+0

是的hasMany另一個類的方法? – zer00ne

+0

我認爲'Group'類沒有在全局範圍中定義? –

+0

正確@GOTO。窗戶[什麼]是一個很遠的地方。我試着用新的what()。我嘗試過:這個[什麼] =什麼,新的什麼()等Group類只是定義:class Group {... –

回答

0

你是怎麼定義class Group

在我的測試中,如果您專門將該類設置爲窗口屬性,它會工作。所以:

window.Group = class {...} 

然後,你可以這樣做:

var instance = new window['Group'](); 
+0

它會工作,是的,但你仍然不應該這樣做。 – Bergi

+1

我並不是一個「不污染窗口對象」的活動家,但是。他也可以用所有的參考和訪問來制定一個詞典。 – ezakto