是否有可能在JavaScript中获得用户定义函数的列表?JavaScript中全局用户定义的函数列表?
我目前使用的这一点,但它返回它不是用户定义的函数:
var functionNames = [];
for (var f in window) {
if (window.hasOwnProperty(f) && typeof window[f] === 'function') {
functionNames.push(f);
}
}
是否有可能在JavaScript中获得用户定义函数的列表?JavaScript中全局用户定义的函数列表?
我目前使用的这一点,但它返回它不是用户定义的函数:
var functionNames = [];
for (var f in window) {
if (window.hasOwnProperty(f) && typeof window[f] === 'function') {
functionNames.push(f);
}
}
我假设你想筛选出本地函数。在Firefox中,Function.toString()
返回函数体,其原生的功能,将在形式:
function addEventListener() {
[native code]
}
你可以匹配在循环模式/\[native code\]/
,并省略相匹配的功能。
是的,这就是我要找的。谢谢 – Annan 2009-01-30 03:37:25
使用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)};
漏报 '东西'。
由于阿赫亚沙斯特里在他的回答表明,你可以检查的[native code]
将字符串函数内部的所有脑干:
Object.keys(window).filter(function(x)
{
if (!(window[x] instanceof Function)) return false;
return !/\[native code\]/.test(window[x].toString()) ? true : false;
});
或者干脆:
Object.keys(window).filter(function(x)
{
return window[x] instanceof Function && !/\[native code\]/.test(window[x].toString());
});
铬你可以得到所有非本地变量和功能:
Object.keys(window);
在Firefox中,这给了期望的r结果,即全局对象,窗口上的所有功能。你指的是什么误报? – Zach 2009-01-29 23:29:58
我也想知道你在说什么误报?我也注意到你还没有声明f,所以如果它是函数的一部分,它将在全局范围内结束。 – some 2009-01-29 23:46:24