키워드: 인수, 피호출자, 호출자
인수: 함수에 전달된 매개변수를 나타냅니다.
호출자: 함수의 명령문과 함수 본문을 나타냅니다.
호출자: 함수를 호출하는 함수를 나타냅니다. 🎜>
arguments
functionName.caller
functionName 객체는 실행 중인 함수의 이름입니다.
함수의 경우 caller 속성은 함수가 실행될 때만 정의됩니다. 함수가 최상위 수준에서 호출되면 caller에는 null 이 포함됩니다. 호출자 속성이 문자열 컨텍스트에서 사용되는 경우 결과는 functionName.toString과 동일합니다. 즉, 함수의 디컴파일된 텍스트가 표시됩니다.
<script type='text/javascript'> function test(x,y,z) { alert("实参长度:"+arguments.length); alert("形参长度:"+arguments.callee.length); alert("形参长度:"+test.length); alert(arguments[ 0 ]) alert(test[ 0 ]) // undefined 没有这种用法 } //test(1,2,3); test(1,2,3,4); /* * arguments不是数组(Array类) */ Array.prototype.selfvalue = 1 ; function testAguments() { alert( " arguments.selfvalue= " + arguments.selfvalue); } alert("Array.sefvalue="+new Array().selfvalue); testAguments(); /**/ /* * 演示函数的caller属性. * 说明:(当前函数).caller:返回一个对函数的引用,该函数调用了当前函数 */ 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("参数1","参数2"); /**/ /* * 演示函数的callee属性. * 说明:arguments.callee:初始值就是正被执行的 Function 对象,用于匿名函数 */ function calleeDemo() { alert(arguments.callee); } calleeDemo(); (function(arg0,arg1){alert("形数数目为:"+arguments.callee.length)})(); /**/ /* * 演示apply,call函数的用法 * 说明:作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别: * apply(thisArg,argArray); * call(thisArg[,arg1,arg2…] ]); * 即所有函数内部的this指针都会被赋值为thisArg */ function ObjectA() { alert( " 执行ObjectA() " ); alert(arguments[ 0 ]); this .hit = function (msg) {alert(msg)} this .info = " 我来自ObjectA " } function ObjectB() { alert( " 执行ObjectB() " ); // 调用ObjectA()方法,同时ObjectA构造函数中的所有this就会被ObjectB中的this替代 ObjectA.apply( this ,arguments); // ObjectA.call(this); alert( this .info); } ObjectB('参数0'); var value = " global 变量 " ; function Obj() { this .value = " 对象! " ; } function Fun1() { alert( this .value); } Fun1(); Fun1.apply(window); Fun1.apply(new Obj()); </script>