题目描述

实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数

代码

 1 /*因为arguments并非真正的数组,因此要获得callIt的第一个参数之后的所有参数,
 2 不能直接使用slice方法截取,需要先将arguments转换为真正的数组才行*/
 3 //方法一:使用slice方法:var args = Array.prototype.slice.call(arguments);
 4 function callIt(fn) {
 5      //将arguments转化为数组后,截取第一个元素之后的所有元素
 6      var args = Array.prototype.slice.call(arguments,1);
 7      //或return fn.apply(null.args),因为给apply传递null,“”空字符串,默认都是this
 8      return fn.apply(this,args);
 9 }
10
11 //方法二:for循环
12 function callIt(fn) {
13     var args = new Array();
14     for(var i=1; i<arguments.length; i++){
15         args[i-1] = arguments[i];
16     }
17     return fn.apply(this,args);
18 }

来源:牛客网

转载于:https://www.cnblogs.com/daheiylx/p/8900101.html

使用apply调用函数相关推荐

  1. javascript中实例对象和构造函数关系、原型语法、原型链、call实现继承、apply调用函数、bind拷贝函数、拷贝继承、class类、super、严格模式、高阶函数、闭包、递归、es6简介

    实例对象和构造函数的关系及原型: 实例对象是通过构造函数创建出来的,实例对象的构造器constructor就是指向构造函数的:每个实例对象中的同一方法的指向是各不相同的,但是其属性值相同的属性可以相同 ...

  2. JavaScript的5种调用函数的方法

    这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! JavaScript,调用函数的5种方法 一次又一次的,我发现,那些有bug的J ...

  3. base | 使用apply族函数进行向量化运算

    R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...

  4. R 语言 apply 系列函数

    apply() 4 4.0 > #apply系列函数 > > #apply(X, MARGIN, FUN, ...) > #参数列表: > #X:数组.矩阵.数据框 &g ...

  5. 手写call,apply,bind函数

    涉及面试题 call,apply,bind函数内部实现是怎样的? 考虑两点: 第一个参数为undefined或null的时候,那么会转变为window 改变了this执行,让新的对象可以执行该函数. ...

  6. lambda调用函数_从另一个Lambda函数调用AWS Lambda函数

    lambda调用函数 In this article, I am going to explain how to create an AWS Lambda function and then call ...

  7. python apply lambda_函数,lambda和apply用法

    1 lambda lambda原型为:lambda 参数:操作(参数) lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方.这区别于def定义的函数 ...

  8. echarts横坐标文字太长显示不完的两种解决办法:rotate旋转文字、调用函数让文字纵向排列

    //方法1:横坐标文字太长显示不完,调用函数解决,在axisLabel下添加属性,让文字纵向排列: formatter:function(val){return val.split("&qu ...

  9. C语言指针调用函数_只愿与一人十指紧扣_新浪博客

    涨姿势啦!指针调用函数的方式不小心被我学会啦! #include int max(int *a) {     int i,m;     m=*a;     for(i=0;i<10;i++)   ...

最新文章

  1. TypeScript 初识
  2. c++ 多重背包状态转移方程_背包问题之零钱兑换
  3. 关于_vmvare workstation装32ubuntu的问题
  4. post发送byte数组_KAFKA消息发送
  5. Spring的AOP-基本概念
  6. linux 内核编译安装及卸载
  7. 把一个sql where表达式转化为一个二叉树
  8. 查看java上下文切换,七日打卡--java并发编程之上下文切换
  9. 初创公司技术架构推荐
  10. c#实现json转kml、kmz、shp格式
  11. 利用Procexp工具监控Windows平台上的Oracle数据库性能
  12. Wowza服务器系列(5):使用rtsp协议向wowza推流的wowoza配置方法
  13. 阿里 java 电话面试_阿里Java开发电话面试经历--惨败
  14. kiriki模拟器Android9,Kirikiroid2模拟器
  15. linux 桌面什么图标好看,Xenlism WildFire:Linux桌面下的一款漂亮图标主题
  16. Gradle的神奇之处
  17. 找出大于200的最小的质数
  18. MySQL数据备份与恢复及sql语句使用方法
  19. 小程序预览报错60001,fail error:109
  20. div无法触发blur事件解决办法

热门文章

  1. ExtJS学习笔记3:载入、提交和验证表单
  2. scrapy笔记——python的时间转换
  3. [Hadoop] Hadoop学习历程 [持续更新中…]
  4. iOS---搜索功能
  5. Java 中一个中文所占字节
  6. ***程序一般的启动方式
  7. ArrayList 扩容
  8. 9个tcpdump使用实例
  9. source insight设置tab键为4个空格
  10. Tomcat8中的并发ConcurrentDateFormat的实现