zoukankan      html  css  js  c++  java
  • js中call,caller,callee,aplly

    1.函数的caller属性

    (1)、区分函数是在函数体调用还是顶层代码中调用:顶层中调用函数,该函数的caller属性返回null,在函数中调用,会返回调用发i函数的函数;

    <script>
    function testFun(){
        if(testFun.caller === null){
            document.write('在顶层中调用');
        }else{
              document.write('在h函数中调用');   
             document.write('在' + testFun.caller.name + '中调用');
        }    
    }
    
    /*直接调用*/、
     testFun();
    /*函数中调用*/
    funtion test(){
         testFun();
    }
    </script>

    2.Arguments的callee属性

    (1)、使用Arguments的callee属性来匿名递归调用函数

    <script>
    function outNum(x,y){
        document.write(x + <br>);
        if(x < y){
             x ++;
             return arguments.callee(x,y);
        }    
       else if(x > y){
             y --;
             return arguments.callee(x,y);
        }  
        else{
            return
        }
    }
    
    /*调用*/、
     outNum(9,4)
    </script>

    3.函数的apply()方法和call()方法

    (1)、语法:funName.call(this[,arg1[,arg2....]]);

    funName.apply(this,[arg1,arg2....]);apply方法后面的参数以数组的额形势传递

    <script>
    function range(_price){
       if(typeof(_price) != 'number'){
            this._price = 1000; 
        }else{
           if(_price >1000){
               this._price = 1000; 
          }else{
              this._price = _price; 
          }
       }
    }
    /*aplly写法*/
    function Monitor(_price, _name)){
       this.name = _name;
       range.aplly(this,arguments);
    }
    /*call写法
    function Monitor(_price, _name)){
       this.name = _name;
       range.call(this,_price);
    }
    */
    Monitor.prototype = new range(); var Monitor1 = new Monitor('c1',800); document.write(monitor1.name,monitor.price); </script>

      

  • 相关阅读:
    关于学习
    两个有序链表序列的合并
    谜题 UVA227
    周期串(Periodic Strings, UVa455)
    数数字(Digit Counting,ACM/ICPC Danang 2007,UVa1225)
    得分(Score, ACM/ICPC Seoul 2005,UVa 1585)
    201505061055_《Javascript编码规范笔记》
    201505031734_《JavaScript中的函数》
    201505030956_《Javascript变量整理》
    201505022013_《js好的坏的》
  • 原文地址:https://www.cnblogs.com/detanx/p/jscall.html
Copyright © 2011-2022 走看看