2014-04-22 26 views
0

比方說,我有這樣的代碼:如何檢查如果一個類的節點存在一個字符串

Person = {}; 
var person = new Person(); 

哪裏人是我在文件Person.js定義的類。在調用上面執行的代碼之前,我想檢查Person類是否存在,如果不是,我想使用require('./'+ className)來包含它。所有動態這樣做,我只有一個字符串開始:

var className = 'Person'; 

如何使用我的className字符串,以確定是否在人節點JS的存在呢?我知道,在瀏覽器中我可以這樣做:

if(window[className]) 

回答

0

這是不可能用Node.js的訪問與var聲明的變量,並且,因爲它是不可能從在Javascript中的字符串獲得一個變量,你不能做你想做的事。

但是,應該有另一種方式做你想做的,如果真的是必要的,也許你可以使用一些的技巧,比如這裏所描述的一個(它可能無法正常工作給你的項目架構):

Get all defined variables in scope in node.js

1

啊,我想通了。在Node中你可以這樣做:

var className = 'Person'; 
if(global[className]) 
+0

你不應該使用這樣的全局變量。只需在模塊中導出類,然後只需要()模塊。如果之前已經需要它,這個類將被緩存,所以不會有真正的性能問題。 – mscdex

+1

@Kirk只有在聲明類時不使用'var'關鍵字纔會有效,這很不可能。 –

相關問題