You are here: irt.org | FAQ | JavaScript | Function | Q800 [ previous next ]
There is a Function object, but it doesn't hold a list of the functions within the current page, but the properties and methods of a function.
For example:
<SCRIPT LANGUAGE="JavaScript"><!--
function myFunctionName() {
var output = '';
output += 'arguments.length = ' + arguments.length + ' : ';
for (var i = 0; i < arguments.length; i++)
output += arguments[i] + ' ';
output += '<BR>';
output += 'myFunctionName.caller = ' + myFunctionName.caller + '<BR>';
alert('myFunctionName.toString = ' + myFunctionName.toString());
document.write(output);
}
//--></SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.1"><!--
function myFunctionName(a,b,c) {
var output = '';
output += 'arguments.length = ' + arguments.length + ' : ';
for (var i = 0; i < arguments.length; i++)
output += arguments[i] + ' ';
output += '<BR>';
output += 'myFunctionName.length = ' + myFunctionName.length + ' : ';
for (var i = 0; i < myFunctionName.length; i++)
output += arguments[i] + ' ';
output += '<BR>';
output += 'myFunctionName.caller = ' + myFunctionName.caller + '<BR>';
output += 'myFunctionName.prototype = ' + myFunctionName.prototype + '<BR>';
alert('myFunctionName.toString = ' + myFunctionName.toString());
document.write(output);
}
//--></SCRIPT>
<SCRIPT LANGUAGE="JavaScript1.2"><!--
function myFunctionName(a,b) {
var output = '';
output += 'arguments.length = ' + arguments.length + ' : ';
for (var i = 0; i < arguments.length; i++)
output += arguments[i] + ' ';
output += '<BR>';
output += 'arguments.caller = ' + arguments.caller + '<BR>';
alert('arguments.callee = ' + arguments.callee);
output += 'Name of function = ' + arguments.callee.toString().match(/function (\w*)/)[1] + '<BR>';
output += 'myFunctionName.length = ' + myFunctionName.length + ' : ';
for (var i = 0; i < myFunctionName.length; i++)
output += arguments[i] + ' ';
output += '<BR>';
output += 'myFunctionName.arity = ' + myFunctionName.arity + ' : ';
for (var i = 0; i < myFunctionName.arity; i++)
output +=arguments[i] + ' ';
output += '<BR>';
output += 'myFunctionName.caller = ' + myFunctionName.caller + '<BR>';
output += 'myFunctionName.prototype = ' + myFunctionName.prototype + '<BR>';
alert('myFunctionName.toString = ' + myFunctionName.toString());
document.write(output);
}
//--></SCRIPT>
<SCRIPT LANGUAGE="JavaScript"><!--
myFunctionName('one','two','three','four');
//--></SCRIPT>Although, as you can see above in JavaScript 1.2 we can extract the name of the function within the function itself. The following demonstrates a generic function that invokes itself:
<SCRIPT LANGUAGE="JavaScript1.2"><!--
function callSelfTwice() {
if (arguments.caller == null) {
// call ourselves once more if not called from a function
alert('Hello');
eval(arguments.callee.toString().match(/function (\w*)/)[1] + '()');
}
else {
alert('World');
}
}
callSelfTwice();
//--></SCRIPT>