Have a javascript function privately track it's number of calls
Date : March 29 2020, 07:55 AM
will be helpful for those in need I'm trying to figure out how I can have a javascript function privately track the number of times it has been called. The objective is to be able to query this value in the console during debugging by doing func.run , Closures are the way to go here: var asdf = (function () {
var runs = 0;
var f = function () {
++runs;
// your function here
};
f.runs = function () {
return runs;
};
return f;
}());
asdf();
asdf();
asdf.runs(); // 2
asdf();
asdf.runs(); // 3
|
Use Javascript to keep track of a function unique to each div
Date : March 29 2020, 07:55 AM
it helps some times I'd just add them to an array inside a click handler (using jQuery, but if you don't like jQuery I can rewrite it without): var clickedColors = []
$('div').click(function() {
clickedColors.push($(this).css('backgroundColor'));
});
window.location='?name='+this.id
window.location='?name='+this.id+'&color='+this.style.backgroundColor
|
How to track down the function that cause javascript error and save to log
Date : March 29 2020, 07:55 AM
may help you . You can wrap your functions in try/catch statements and if an error occurs you can catch errors and then write them in file via server for example. try {
yourFunctionCallHere();
} catch (err) {
var message = 'yourFunctionCallHere failed: ' + err.message;
//now you can do smth with this error message, for example send an ajax request to the server...
}
|
Keep track of function calls in JavaScript
Date : March 29 2020, 07:55 AM
help you fix your problem If you're looking to run some kind of analysis on your code, consider using an external tool/library rather than hard-code it into your application. Esprisma's function instrumentation example shows the possibility to inject instrumentation at runtime to keep track of function calls and such. // define some function we can use to call functions with that will save
// previous execution parameters so we can repeat previous calls
callFunction = (function() {
var called = {};
function callFunction() {
// turn the arguments associative array into a real array
args = Array.prototype.slice(arguments, 0);
if(args.length == 4) {
// assume we want to call and save the function
runAndSaveFunction.apply(this, args);
}
if(args.length == 1) {
// assume we want to recall a function based off an id
repeatCall.apply(this, args);
}
}
function runAndSaveFunction(context, func, args, id) {
// call the function given a context
func.apply(context, args);
// save the call
called[id] = {
fn: func,
args: args,
ctx: context
};
}
function repeatCall(id) {
var call = called[id];
runAndSaveFunction(call.ctx, call.fn, call.args, id);
}
return callFunction;
})();
// this function exists just to call our real function
// below with our instrumentation
function func1() {
callFunction(this, _func1, arguments, 'someId');
}
// we designate the original as a "private" function that
// actually contains the implementation
function _func1(param1, param2, ... , paramN) {
...
}
func1(a, b, c, d, e...);
callFunction('someId'); // recall the previous func1 call
|
How to track callback function events in JavaScript?
Date : March 29 2020, 07:55 AM
Hope this helps Due to the lack of answers about using simplified custom event listener functions, I ended up going back to using a addEventListener polyfill. To make sure recent browsers don't load this script for no reasons, I'm conditionally loading it while still in with this simplified conditional loader: // Event listener methods for IE8.
if (!Element.prototype.addEventListener && !document.body) {
document.write('<script src="addEventListener.js"></script>');
}
|