简介

用来调用方法,第一个参数替换掉用方法的this对象

区别:
call:A.fn.call(B, arg1,arg2,argn...),后面的参数用逗号分隔

apply:A.fn.apply(B, [arg1,arg2,argn...]),后面的参数是数组

当fn是匿名函数时,可以省略。

示例

比如实现一个迭代器:

使用apply:

var each = function (arr, callback) {
for (var i = 0, len = arr.length; i<len; i++) {
callback.apply(arr[i], [i, arr[i]])
}
} each([1,2,3,4,5], function(i, el) {
console.log('this:',this, 'index: ',i, 'item: ', el)
})

使用call:

var each = function (arr, callback) {
for (var i = 0, len = arr.length; i<len; i++) {
callback.call(arr[i], i, arr[i])
}
} each([1,2,3,4,5], function(i, el) {
console.log('this:',this, 'index: ',i, 'item: ', el)
})

两者均输出:

this Number {1} index:  0 item:  1
init.js:1 this Number {2} index: 1 item: 2
init.js:1 this Number {3} index: 2 item: 3
init.js:1 this Number {4} index: 3 item: 4
init.js:1 this Number {5} index: 4 item: 5

js apply 与 call的更多相关文章

  1. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  2. [荐]Js apply()和call()方法详解 - http://www.w3cfuns.com/article-5596443-1-1.html

    本帖最后由 默默DE人生 于 2013-3-19 13:22 编辑 Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文 ...

  3. Js apply 方法 详解

    Js apply方法详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  4. Js apply() call()使用详解

    Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里 ...

  5. Js apply 方法 具体解释

    Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了 ...

  6. Js apply call方法详解

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  7. Js apply()使用详解

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  8. Js apply方法详解,及其apply()方法的妙用

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  9. Js apply方法与call方法详解 附ES6新写法

    我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...

  10. js apply/call/caller/callee/bind使用方法与区别分析

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...

随机推荐

  1. 人眼对led灯的闪烁识别度:写单片机的时候,小于15ms,我们人眼视为常亮

    人眼对于每11毫秒闪烁一次约83赫兹基本感觉不到,每15毫秒闪烁一次约66赫兹轻微频闪. 所以写单片机的时候,小于15ms,我们人眼视为常亮

  2. 通过ESP8266WiFi模块调用“心知天气”接口 获取天气信息

    在分析代码之前,首先介绍 ArduinoJson 库的安装及"心知天气"的ID申请 一.安装 ArduinoJson 库 进入 Arduino 开发环境后,选择菜单栏-->工 ...

  3. 初学银河麒麟linux笔记 第三章 QT缺少的模块下载、更新软件源操作

    在共享文件夹里将WINDOWS里已经编写好的QT程序编译之后,提示 Qt5: Unknown module(s) in QT: serialport 经查询,需要安装对应的模块库,写入 sudo ap ...

  4. Python_基础_Print_转义字符和原字符

    转义字符和原字符 print('hello\nworld') #转义功能的首字母 n-->newline的首字母表示换行 print('hello\tworld') #\t即表示一个制表位 pr ...

  5. kafka配置内外网同时访问

    #内网监听名称,这个在配置文件中没有需要添加 inter.broker.listener.name=INTERNAL #内网监听规则,第一个是内网,第二个是外网,注意端口不一样,端口可以自己定义 li ...

  6. Docker 基础常用命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.Docker是内核 ...

  7. Python SQLite创建数据库和数据表及数据的增删改查

    SQLite是一款轻型的SQL类型数据库,处理速度快且占用资源非常低,Python自带, 不需要配置不需要任何外部的依赖.数据库本身就是一个.db文件,非常适合存储本地数据.本文主要介绍Python ...

  8. unable to access 'https://github.com/.../...git': Recv failure: Connection was reset

    解决git下载报错:fatal: unable to access 'https://github.com/.../...git': Recv failure: Connection was rese ...

  9. gitea安装部署

    安装gitea前需要先安装好git,具体参考https://www.cnblogs.com/magicMaQaQ/p/16062312.html 1.安装数据库,gitea支持多种数据库,这里选择my ...

  10. Apollo配置中心拉取,通过单独打包解决 Get config services failed from http://阿里云局域网访问IP:8080/services/config?appId=MyAppId&ip=192.168.145.1 Cause Could not complete get operation

    Apollo配置中心拉取,通过单独打包解决 Get config services failed from http://阿里云局域网访问IP:8080/services/config?appId=M ...