从3个小时开始,我搜索一个Javascript函数,该函数返回用户可访问/创建的函数列表。
不幸的是,我找不到任何东西......
您知道如何在Google V8 Javascript引擎上执行此操作吗?
PS:对不起我的英语,我是法国学生:D
答案 0 :(得分:2)
没有编制当前函数或变量列表的编程方法。
您至少需要知道这些功能的存在 - 例如在特定的命名空间。
var fn = {};
fn.someFunc = function(){}
fn.someProp = 'foo';
fn.someOtherFunc = function(){}
//get all funcs
for (var i in fn) if (typeof fn[i] == 'function') alert('found a function');
答案 1 :(得分:2)
请注意,默认情况下,未声明为对象方法的函数被视为窗口对象的方法。
因此,使用类似下面的代码,您可以列出窗口对象的所有功能。 你可以检查输出并添加更好的过滤器来改进isFunction函数,我偷了here。
<script type="text/javascript">
function myTest() //function to be detected
{
return true;
}
function isFunction(functionToCheck)
{
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) == '[object Function]';
}
for( var it in window )
{
if(isFunction(window[it]))
console.log(it+":"+window[it]);
}
</script>
答案 2 :(得分:1)
也许我可以帮到你。从全局上下文开始,此调用在每个对象中自上而下。第一个函数返回我们的自由范围对象所在的全局对象。我们对每个对象进行递归搜索功能或任何你想要的东西。
var global = (function(){return this;})();
(function(ctx){
for(var i in ctx) {
// put your function check here.
// System.out.println(i + ' ' + typeof ctx[i]);
if(ctx[i] instanceof Object) {
arguments.callee(ctx[i]); }
}
})(global);