使用JavaScript计算函数调用

时间:2015-07-31 07:40:33

标签: javascript function closures prototype

例如:我有很多功能并且多次使用它们。 我需要计算每个函数的调用。 制作它的最佳做法是什么?

起初我认为我需要关闭,但我无法以正确的方式实现它。

4 个答案:

答案 0 :(得分:3)

在最简单的情况下,您可以使用分析包装器来装饰每个函数:



_calls = {}

profile = function(fn) {
    return function() {
        _calls[fn.name] = (_calls[fn.name] || 0) + 1;
        return fn.apply(this, arguments);
    }
}

function foo() {
    bar()
    bar()
}

function bar() {
}

foo = profile(foo)
bar = profile(bar)

foo()
foo()

document.write("<pre>" + JSON.stringify(_calls,0,3));
&#13;
&#13;
&#13;

对于严肃的调试,使用专用的探查器(通常位于浏览器的控制台中)可能会更好。

答案 1 :(得分:0)

您可以尝试这样的事情:

<script>
    var aCalls = 0;
    var bCalls = 0;
    function a()
    {
        aCalls = aCalls + 1;
        alert(aCalls);
    }
    function b()
    {
        bCalls = bCalls + 1;
        alert(bCalls);
    }
</script>

答案 2 :(得分:0)

var count = 0;

function myfunction()
{
    count++;
    alert( "Function called " + count);
}


myfunction();
myfunction();

http://jsfiddle.net/xsdzpmwm/3/

答案 3 :(得分:0)

最好的方法是使用分析器。

在IE上:按F12打开开发人员工具,然后转到“Profiler”选项卡,然后点击“播放”按钮。停止分析器后,您将收到大量信息(每个功能的呼叫次数,包含时间,独占时间等)。

在Chrome上:按F12,转到配置文件,收集JavaScript CPU配置文件(虽然不会告诉您通话次数)