2011-09-15 64 views
0

我正在使用google閉包編譯器來檢查我的JavaScript代碼。我有一個函數創建並返回一個新的「類」。也就是說,一個函數返回一個可以應用新的對象並返回該類的「實例」對象。例如,如何指定返回新類對象的函數的類型

var newclass = createFactory('Car'); 
var acar = new newclass(); 
acar.show();  // executes newclass.prototype.show() 
newclass.staticmethod(); // executes newclass.staticmethod() 

該節目和staticmethods是由createFactory方法創建的。

我無法定義google閉包編譯器的newclass類型,因此它將newclass識別爲具有類方法staticmethod和實例方法show的構造函數。

任何和所有幫助,將不勝感激。

+0

'createFactory()'是否返回一個函數?你能向我們展示createFactory的代碼嗎? – jfriend00

+0

createFactory在外部庫中,但是,像這樣:createFactory(name)= {var x = function(){}; x.name =名; x.prototype.show = function(){...}; x.staticmethod = function(){...}; return x; } – seth

回答

1

假設生成的工廠有一些通用的基類或接口(我將使用KnownType)。這應該做的伎倆:

/** @type {function(new:KnownType)} */ 
var newClass = createFactory(); 

這是說「的NewClass」是一個使用返回KnownType的情況下,在這種情況下,它被聲明爲不採取任何參數的「新」被調用的函數,但你能夠。

CreateFactory可以將此類型聲明爲其返回類型,或者您通常使用類型的任何位置。