• 临时调用call()与apply()方法


    当在某个局域范围内要调用构造函数中或者其他局域范围内的方法

    此时可以用到临时调用方法call与apply

    虽然这两个方法都是起临时调用的功能,但是用法不一样
    
    call(obj,val)
    
    obj:对象名,构造函数用指代this;  val:指代属性值
    
    apply(obj,arr)
    
    obj:对象名,构造函数用指代this;  arr:属性值的数组
    
     
    
    实例一:
    
    function SuperType(name){
      this.name = name;
    }
    
    function SubType(){
      //    SuperType.call(this,"Lucy");    //临时调用构造函数SuperType里面的name属性
      SuperType.apply(this,["Lucy"]);  
      this.age = 19;
    }
    
    var instance = new SubType();
    alert(instance.name);   //Lucy
    
    
    
    //但是有些场合只能用特定的方法,不能互换
    
    实例二:
    
    取数组中最大值:
    
    function isMax(arr){return Math.max.apply(null,arr)}
    
    var nums = isMax([2,3,4,5,6]);
    
    alert(nums);   //6



    //在涉及到临时调用数组Array、对象Object以及调用其他类型方法时

      var a = {"0":"a","1":"b",length:2};

     1.利用字符串连接

      var b = Array.prototype.join.call(a,"+"); //临时调用数组a的方法  a+b

      2.利用函数方法

      var c = Array.prototype.map.call(a,function(key,val){

        return key.toUpperCase();  

      });   //[A,B]

      计算hash数组长度

      function cacuObjLen(obj){

         var len = 0;
         foreach(var property in obj){

            if(Object.prototype.hasOwnProperty.call(obj,property)){  //临时调用对象方法,判断hash数组是否有对应的属性

                len++;

            }

         }

         return len;

      }

      

  • 相关阅读:
    TinyCMips
    C++坑点集合
    2017,不能再咸鱼了
    浅谈C语言变量声明的解析
    独自handle一个数据库大程有感
    Async Programming
    04python 中的各种推导式(python函数)
    03python 迭代器与生成器(python函数)
    02python 装饰器(python函数)
    01python 中的函数与函数式编程(python函数)
  • 原文地址:https://www.cnblogs.com/laoniaofly/p/5946386.html
Copyright © 2020-2023  润新知