当前位置:  开发笔记 > 编程语言 > 正文

JavaScript中的全局用户定义函数列表?

如何解决《JavaScript中的全局用户定义函数列表?》经验,为你挑选了2个好方法。

是否可以在JavaScript中获取用户定义函数的列表?

我目前正在使用它,但它返回非用户定义的函数:

var functionNames = [];

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

Chetan Sastr.. 19

我假设您想要过滤掉本机功能.在Firefox中,Function.toString()返回函数体,对于本机函数,它将采用以下形式:

function addEventListener() { 
    [native code] 
}

您可以匹配/\[native code\]/循环中的模式并省略匹配的函数.



1> Chetan Sastr..:

我假设您想要过滤掉本机功能.在Firefox中,Function.toString()返回函数体,对于本机函数,它将采用以下形式:

function addEventListener() { 
    [native code] 
}

您可以匹配/\[native code\]/循环中的模式并省略匹配的函数.



2> razzak..:

正如Chetan Sastry在他的回答中建议的那样,你可以检查[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());
});

在chrome中,您可以通过以下方式获取所有非原生变量和函数:

Object.keys(window);

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有