Elenco delle funzioni globali definite dall’utente in JavaScript?

È ansible ottenere un elenco delle funzioni definite dall’utente in JavaScript?

Attualmente sto usando questo, ma restituisce funzioni che non sono definite dall’utente:

var functionNames = []; for (var f in window) { if (window.hasOwnProperty(f) && typeof window[f] === 'function') { functionNames.push(f); } } 

Suppongo che tu voglia filtrare le funzioni native. In Firefox, Function.toString() restituisce il corpo della funzione, che per le funzioni native, sarà nella forma:

 function addEventListener() { [native code] } 

Puoi abbinare il pattern /\[native code\]/ nel tuo loop e omettere le funzioni corrispondenti.

Come suggerito da Chetan Sastry nella sua risposta, è ansible verificare l’esistenza di [native code] all’interno della funzione stringificata:

 Object.keys(window).filter(function(x) { if (!(window[x] instanceof Function)) return false; return !/\[native code\]/.test(window[x].toString()) ? true : false; }); 

O semplicemente:

 Object.keys(window).filter(function(x) { return window[x] instanceof Function && !/\[native code\]/.test(window[x].toString()); }); 

in chrome puoi ottenere tutte le variabili e le funzioni non native tramite:

 Object.keys(window); 

Utilizzando Internet Explorer:

 var objs = []; var thing = { makeGreeting: function(text) { return 'Hello ' + text + '!'; } } for (var obj in window){window.hasOwnProperty(obj) && typeof window[obj] === 'function')objs.push(obj)}; 

Non riesce a segnalare “cosa”.