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>

      

  • 相关阅读:
    【转】JSch
    【转】JSch
    【转】class卸载、热替换和Tomcat的热部署的分析
    关于Tomcat自动加载更新class的小技巧
    MySQL中order by中关于NULL值的排序问题
    MySQL触发器使用详解
    QuartZ Cron表达式
    JDBC的URL设置allowMultiQueries的原因
    CRT:C运行库简介
    IntelliJ IDEA安装AngularJS插件
  • 原文地址:https://www.cnblogs.com/detanx/p/jscall.html
Copyright © 2011-2022 走看看