例如:我有很多函数,并且使用了很多次,我需要统计每个函数的调用次数,制作它的最佳实践是什么?起初我以为我需要闭包,但我不能以正确的方式实现它。
dtcbnfnu1#
在最简单的情况下,您可以使用分析 Package 器来修饰每个函数:
_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));
对于重要的调试,最好使用专用的分析器(通常位于浏览器的控制台中)。
bihw5rsg2#
你可以试试这样的方法:
<script> var aCalls = 0; var bCalls = 0; function a() { aCalls = aCalls + 1; alert(aCalls); } function b() { bCalls = bCalls + 1; alert(bCalls); } </script>
m528fe3b3#
var count = 0; function myfunction() { count++; alert( "Function called " + count); } myfunction(); myfunction();
http://jsfiddle.net/xsdzpmwm/3/
cdmah0mi4#
最好的方法是使用分析器。在IE上:按F12打开开发者工具,然后转到Profiler选项卡,点击播放按钮。在停止Profiler后,你会看到很多信息(每个函数的调用次数,包含时间,独占时间等)。在Chrome上:按F12,进入配置文件,收集JavaScript CPU配置文件(但不会告诉你调用的次数)
but5z9lq5#
我的方法是给函数本身添加一个属性“count”。只需在您希望跟踪调用的函数的开头添加一行即可。
function func() { func.count = (func.count || 0) + 1; // first time you call the function func.count is undefined so use 0 instead console.log("hi"); } func(); console.log(func.count) // 1 func(); func(); func(); console.log(func.count) // 4
函数毕竟是javascript中的对象。没有全局命名空间污染,没有 Package ,非常容易理解和编写。J
5条答案
按热度按时间dtcbnfnu1#
在最简单的情况下,您可以使用分析 Package 器来修饰每个函数:
对于重要的调试,最好使用专用的分析器(通常位于浏览器的控制台中)。
bihw5rsg2#
你可以试试这样的方法:
m528fe3b3#
http://jsfiddle.net/xsdzpmwm/3/
cdmah0mi4#
最好的方法是使用分析器。
在IE上:按F12打开开发者工具,然后转到Profiler选项卡,点击播放按钮。在停止Profiler后,你会看到很多信息(每个函数的调用次数,包含时间,独占时间等)。
在Chrome上:按F12,进入配置文件,收集JavaScript CPU配置文件(但不会告诉你调用的次数)
but5z9lq5#
我的方法是给函数本身添加一个属性“count”。
只需在您希望跟踪调用的函数的开头添加一行即可。
函数毕竟是javascript中的对象。没有全局命名空间污染,没有 Package ,非常容易理解和编写。J