2009-01-29 25 views
28

JavaScript'te kullanıcı tanımlı işlevlerin bir listesini almak mümkün mü?JavaScript'te global kullanıcı tanımlı işlevlerin listesi?

Şu anda bu kullanıyorum, ancak kullanıcı tanımlı olmayan işlevleri verir:

var functionNames = []; 

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

Firefox'ta bu beklenen esults, yani global nesne üzerindeki tüm fonksiyonlar, pencere. Hangi yanlış pozitifleri kastediyorsunuz? – Zach

+0

Ayrıca, neden bahsettiğiniz yanlış pozitifleri merak ediyorum? Ayrıca, f beyan etmediğinizi de fark ettim, bu yüzden eğer bir fonksiyonun parçası olsaydı, küresel kapsamda sona erecek. – some

cevap

19

Sana doğal işlevleri filtrelemek istiyorum tahmin ediyorum.

function addEventListener() { 
    [native code] 
} 

Sen döngüde desen /\[native code\]/ maç ve maç fonksiyonlarını ihmal olabilir: Firefox'ta, Function.toString() yerli fonksiyonlar için, şeklinde olacak fonksiyon gövdesini döndürür.

+0

Evet, aradığım şey bu. teşekkürler – Annan

-3

Internet Explorer kullanarak:

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)}; 

'şey' rapor başarısız.

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

Veya sadece:

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

tüm olmayan alabilirsiniz Çetan Sastry onun cevabını önerildiği gibi

+0

Bu diğer web tarayıcılarında çalışır mı? –

+0

'thing' global bir nesnedir. 'thing.makeGreeting' bir işlev ama küresel değil. Bunlardan hiçbiri yakalanmamalıdır. – Annan

8

, sen dizgelenmiş işlevi içinde [native code] özendirdiği için kontrol edebilirsiniz yerel değişkenler ve işlevler:

Object.keys(window); 
İlgili konular