Js arguments jcallee caller usage summary
- 2020-03-30 00:39:06
- OfStack
Key words: the arguments, the callee, caller
Arguments: represents an argument to the passed function
Callee: a statement that represents a function and its body
Caller: represents the function that calls the function
The arguments
This object represents the arguments to the function being executed and to the function calling it.
caller
Returns a reference to a function that calls the current function.
FunctionName. The caller
The functionName object is the name of the function being executed.
instructions
For functions, the caller property is defined only when the function executes. If the function is called from the top level, the caller contains null. If the caller property is used in the string context, the result is the same as functionname.tostring, that is, the decompressed text of the function is displayed.
The callee
Returns the body of the Function object being executed, that is, the specified Function object.
[function.] the arguments. The callee
The optional function parameter is the name of the currently executing function object.
instructions
The initial value of the callee property is the Function object being executed.
The callee property is a member of the arguments object and represents a reference to the function object itself, which is good for recursion of anonymous functions or for encapsulation of functions, such as the recursion in the following example to calculate the sum of natural Numbers from 1 to n. This property is only available when the relevant function is executing. It's also important to note that callee has a length property, which is sometimes good for validation. Arguments. Length is the argument length, and arguments. Callee. Length is the argument length, so you can tell if the argument length is the same as the argument length when called.
<script type='text/javascript'>
function test(x,y,z)
{
alert(" The length of the arguments :"+arguments.length);
alert(" The length of the parameter :"+arguments.callee.length);
alert(" The length of the parameter :"+test.length);
alert(arguments[ 0 ])
alert(test[ 0 ]) //Undefined has no such use
}
//test(1,2,3);
test(1,2,3,4);
Array.prototype.selfvalue = 1 ;
function testAguments() {
alert( " arguments.selfvalue= " + arguments.selfvalue);
}
alert("Array.sefvalue="+new Array().selfvalue);
testAguments();
/**/
function callerDemo() {
if (callerDemo.caller) {
var a = callerDemo.caller.arguments[ 0 ];
alert(a);
} else {
alert( " this is a top function " );
}
}
function handleCaller() {
callerDemo();
}
callerDemo();
handleCaller(" parameter 1"," parameter 2");
/**/
function calleeDemo() {
alert(arguments.callee);
}
calleeDemo();
(function(arg0,arg1){alert(" The number of the shape is :"+arguments.callee.length)})();
/**/
function ObjectA() {
alert( " perform ObjectA() " );
alert(arguments[ 0 ]);
this .hit = function (msg) {alert(msg)}
this .info = " I come from ObjectA "
}
function ObjectB() {
alert( " perform ObjectB() " );
//Call the ObjectA() method, and all this in the ObjectA constructor is replaced by this in ObjectB
ObjectA.apply( this ,arguments); // ObjectA.call(this);
alert( this .info);
}
ObjectB(' parameter 0');
var value = " global variable " ;
function Obj() {
this .value = " Object! " ;
}
function Fun1() {
alert( this .value);
}
Fun1();
Fun1.apply(window);
Fun1.apply(new Obj());
</script>