zoukankan      html  css  js  c++  java
  • apply()与call()详解

    两者使用的目的:改变调用的函数体内部的this的指向。

    相同点:均是调用某对象的方法,格式:obj.函数名.call()

    call(obj,参数1,参数2):两个参数,前者将代替Function类里this对象,后者(多个元素)作为参数传递给被调用的函数。

    var foo = {
      name:"mingming",
      logName:function(){
        console.log(this.name);
      }
    }
    var bar={
      name:"xiaowang"
    };
    foo.logName.call(bar);//xiaowang

    apply(obj,[参数1,参数2]),同上,不同点是第二个参数是数组。(将数组的每个元素作为一个个参数传递给被调用的函数,性质与call()方法一样)

    利用apply()这一特性的一些小场景

    //求数组的最大值
    var arr = [1,2,3,4,7,34,8]     
    var max=Math.max.apply(null,arr)  //34   Math.max()参数不能为数组
    //求数组的最小值
    var max=Math.min.apply(null,arr) //1
    //合并数组并返回新数组的长度
    var arr1=new Array("1","2","3");
    var arr2=new Array("4","5","6");
    Array.prototype.push.apply(arr1,arr2); //6
  • 相关阅读:
    Python基础-迭代器
    Python基础-生成器
    Python基础-装饰器
    Python基础-函数
    Python基础-文件操作
    Python基础-集合
    jfinal任务调度quartz(cron) 定时任务 QuartzPlugin
    ServletRequest.getRequestDispatcher
    QuartZ Cron表达式
    Jax-WS WebService实现
  • 原文地址:https://www.cnblogs.com/hope-h/p/11066821.html
Copyright © 2011-2022 走看看