• 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>

      

  • 相关阅读:
    JMM内存模型
    APUE习题8.7
    整型和字符数组之间的转换(略带进制的转化)
    数据结构学习——shell排序的C语言实现
    Unix环境高级编程学习笔记——fcntl
    Unix环境高级编程学习笔记——dup
    链表
    计算机数值表示
    整数位运算相关操作
    win和linux下控制台界面中停顿X秒的方式
  • 原文地址:https://www.cnblogs.com/detanx/p/jscall.html
Copyright © 2020-2023  润新知