>  기사  >  웹 프론트엔드  >  js 인수,jcallee 호출자 사용 요약

js 인수,jcallee 호출자 사용 요약

高洛峰
高洛峰원래의
2017-01-04 17:21:591216검색

키워드: 인수, 피호출자, 호출자
인수: 함수에 전달된 매개변수를 나타냅니다.
호출자: 함수의 명령문과 함수 본문을 나타냅니다.
호출자: 함수를 호출하는 함수를 나타냅니다. 🎜>
arguments

이 개체는 실행 중인 함수의 매개변수와 이를 호출하는 함수를 나타냅니다.

caller

현재 함수를 호출한 함수에 대한 참조를 반환합니다.

functionName.caller
functionName 객체는 실행 중인 함수의 이름입니다.

설명

함수의 경우 caller 속성은 함수가 실행될 때만 정의됩니다. 함수가 최상위 수준에서 호출되면 caller에는 null 이 포함됩니다. 호출자 속성이 문자열 컨텍스트에서 사용되는 경우 결과는 functionName.toString과 동일합니다. 즉, 함수의 디컴파일된 텍스트가 표시됩니다.

callee

지정된 Function 개체의 본문인 실행 중인 Function 개체를 반환합니다.

[function.]arguments.callee

선택적 함수 매개변수는 현재 실행 중인 함수 객체의 이름입니다.

설명

callee 속성의 초기값은 실행 중인 Function 객체입니다.

호출자 특성은 인수 개체의 멤버입니다. 이는 함수 개체 자체에 대한 참조를 나타냅니다. 이는 익명 함수의 재귀 또는 함수 캡슐화를 보장하는 데 유용합니다. 1부터 n까지의 자연수를 재귀적으로 계산합니다. 이 속성은 관련 기능이 실행 중일 때만 사용할 수 있습니다. 또한 호출 수신자에게는 길이 속성이 있으며 때로는 확인에 더 적합하다는 점에 유의해야 합니다. args.length는 실제 매개변수 길이이고,args.callee.length는 형식 매개변수 길이입니다. 이를 통해 호출 중에 형식 매개변수 길이가 실제 매개변수 길이와 일치하는지 여부를 확인할 수 있습니다.

<script type=&#39;text/javascript&#39;>
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(&#39;参数0&#39;);

  var  value = " global 变量 " ;
  function  Obj() {
     this .value = " 对象! " ;
 }
  function  Fun1() {
    alert( this .value);
 }
   Fun1();
   Fun1.apply(window); 
   Fun1.apply(new Obj());
</script>


더 많은 js 인수, jcallee 호출자 사용 요약 및 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.