简介

用来调用方法,第一个参数替换掉用方法的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. 宝塔部署 vue + thinkphp

    部署https://blog.csdn.net/xinxinsky/article/details/105441164?spm=1001.2101.3001.6650.2&utm_medium ...

  2. [服务器]Windows Server 2008 64位1核1G安装SQL Server2008

    本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd 这台服务器是2017年初买的,那时候1核1G,3年要1500.不过现在便宜了,2核4G,3年也就1 ...

  3. shell语法3-expr命令、read命令、echo命令

    一.expr命令(注:常常配合``或者$()来取得所求的值) 1.expr用于求表达式的值:expr 表达式 注意: (1)用空格隔开每一项(2)用反斜杠放在shell特定的字符前面(发现表达式运行错 ...

  4. pycharm、pyqt5、pyuic、anaconda配置界面

    转载一篇很棒的文档,讲解的是如何在pycharm里面使用QT  desiger勾画界面并且将相应的界面转化成py文件 https://www.jianshu.com/p/8b992e47a0e4 个人 ...

  5. Java基础学习:5、递归

    1.递归:就是方法自己调用自己. public class Test01 { public void test(int n) { if (n > 2) { test(n -1); } Syste ...

  6. Visual Studio 快速生成构造函数

    生成构造函数快速操作 - Visual Studio (Windows) | Microsoft Learn 键盘 按 (Ctrl+.) 触发"快速操作和重构"菜单. 鼠标 右键单 ...

  7. django admin 字段设置

    来源:http://xieboke.net/article/100/ django admin 后台里有些输入框长度.宽度.提示语等,可能不满足我们的需求,这个时候,我们就需要对 admin 的样式进 ...

  8. 牛客java基础语法在线编程-知识点小结(待完善)

    知识点小结 一.输入输出 Scanner类 Scanner类在java.util包下,导包格式如下: import java.util.Scanner; 使用示例: import java.util. ...

  9. 接口测试工具POSTMAN的使用

    接口测试工具postman python ------------------------------------ 作为后端,写好了接口,我们自己要测试通过,再给别人用 --------------- ...

  10. window操作

    1.进入目录 cd ... 2. 进入D盘 D: 3.读取文件内容 type file