从 3 小时开始,我搜索了一个 Javascript 函数,该函数返回用户可访问/创建的函数列表。
不幸的是,我什么也没找到......
您知道如何在 google V8 Javascript 引擎上执行此操作吗?
PS:对不起我的英语,我是法国学生:D
从 3 小时开始,我搜索了一个 Javascript 函数,该函数返回用户可访问/创建的函数列表。
不幸的是,我什么也没找到......
您知道如何在 google V8 Javascript 引擎上执行此操作吗?
PS:对不起我的英语,我是法国学生:D
没有编程方式来抓取当前函数或变量的列表。
您至少需要知道这些函数的位置——例如在特定的命名空间中。
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');
请注意,默认情况下,未声明为对象方法的函数被视为窗口对象的方法。
因此,使用类似下面的代码,您可以列出窗口对象的所有功能。您可以检查输出并添加更好的过滤器来改进我在这里窃取的 isFunction 函数。
<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>
我也许可以帮你。这个调用在每个对象中从上到下,从全局上下文开始。第一个函数返回全局对象,这是我们的自由范围对象。我们对每个对象进行递归搜索以查找函数或您想要的任何内容。
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);