2015-06-14 18 views
0

我正在看pace.js的來源,它有一個相當長的約一千行的源代碼。您可以查看源碼here如何獲得一個JS腳本中的獨特功能的總數

我需要調試此代碼。 JavaScript中是否有任何工具或方法可以用來確定給定插件中有多少獨特的功能?我發現這是一個辦法:

  • 粘貼在文本編輯器
  • 代碼確定各功能獨立
  • 粘貼的console.log(「我是某某功能」)。
  • 運行腳本和複製的結果從控制檯粘貼在文本編輯器
  • 計數功能的數

有沒有一種更簡單的方法來做到這一點?

+1

你不能只取詞「功能」的計數使用的搜索功能無論使用哪種文本編輯器? –

+0

@AlexMcMillan,好主意! ,但這對於我的非編程老闆來說還不夠明確。 –

+1

聽起來像你需要爲這段代碼生成一些文檔。會像JSDoc的工作? –

回答

1

該方法首先找到窗口對象中的所有函數。然後將這些函數引用傳遞給與函數匹配的'getInnerFunction()'與正則表達式匹配,以檢測任何內部函數。最後返回函數的計數。

但是它不能檢測瀏覽器的本地函數存在的內部函數,因爲它們返回

function FUNCTION NAME { 
    [native code] 
} 

以此爲字符串輸出。

對於其他情況下,這應該工作。只需調用fnCount(),您將收到存在的函數數量(從結果中減去2以排除這兩個函數)。

**如果與匹配正則表達式的函數有任何問題,請糾正我的錯誤。

function fnCount(){ 

var keys = Object.keys(window); 
var property; 
var count = 0; 
for(var i=0;i<keys.length; i++){ 
    property = window[keys[i]]; 
    if(typeof(property) === 'function'){ 
     count += getInnerFunction(property); 
    } 
} 
return count; 
} 


function getInnerFunction(property){ 
    var fn = property.toString(); 
    var fnCount = fn.match(/function.*\(.*\).*{.*/g).length; 
    return fnCount; 
} 
+0

您可以修改fnCount方法並傳入'Pace'而不是'window'以獲取僅用於該庫的函數計數。 –

-1

打開記事本++,按Ctrl + F,輸入功能,單擊查找所有...

enter image description here