2015-05-30 117 views

回答

5

下面是一個例子。它假定你有一些引用範圍的方法。類裝飾器magical在它應用於的類上創建一個名爲isMagical的字符串屬性,並將其值確定爲「確實」。然後findMagicalInScope()函數循環遍歷指定範圍的屬性(這就是爲什麼類都在模塊中)並查看它們是否具有isMagical屬性。在Node.js的運行時

module myContainer { 

    @magical 
    export class foo { 
    } 

    export class bar { 
    } 

    @magical 
    export class bas { 
    } 
} 


function magical(item: any) { 
    item.isMagical = "indeed"; 
} 

function findMagicalInScope(theScope: any) { 
    for(let prop in theScope) { 
    if (theScope[prop]["isMagical"]) { 
     console.log(`Is ${prop} magical? ${theScope[prop]["isMagical"]}!`); 
    } else { 
     console.log(`${prop} is not magical. :-(`); 
    } 
    } 
} 

findMagicalInScope(myContainer); 

就會產生此輸出:

Is foo magical? indeed! 
bar is not magical. :-(
Is bas magical? indeed! 
+0

當類在不同的文件中時,我們可以做到嗎? –

+0

是否有像全局範圍可用於搜索所有文件? –

+0

如果你在瀏覽器中,你可以使用'window'對象。否則,您必須以某種方式收集它們,比如製作您對對象屬性感興趣的所有內容。 – NYCdotNet

-1

正確的方法是從一個裝飾處理填充靜態集合。

+0

你確定嗎? – monamona