简介

用来调用方法,第一个参数替换掉用方法的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. 3、k8s 核心实战

    7 kubernets核心实战 7.1 资源创建方式 命令行 yaml 7.2 namespace 名称空间来隔离资源 命令行方式 kubectl create ns hello kubectl de ...

  2. js数组去重,删除重复的属性值

    let a=[] let hash={} a=a.reduce((pre,next)=>{ hash[next.name]?"":(hash[next.name]=true& ...

  3. maven :Cannot start maven service

    问题报错信息:maven启动失败 java.lang.RuntimeException: Cannot start maven service at org.jetbrains.idea.maven. ...

  4. react native 状态栏和安全区域的使用

    1.  状态栏组件,react native文档提供了说明.我需要的是设置透明效果,如下图. 代码如下 <StatusBar translucent={true} backgroundColor ...

  5. react native 模拟机调试,debug菜单在哪

  6. Linux常用命令-文件处理命令一

    命令格式:         命令 [-选项] [参数]           例如: ls -la /etc 说明:         选项--通常是功能         参数--通常是操作对象     ...

  7. web服务器应答状态代码(status)及其含义

    Web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答 头,一个空行,内容文档.下面是一个最简单的应答   : 状态行包含HTTP版本.状态代码.与状态代码对 ...

  8. 无锁并发,CAS等

    Unsafe

  9. python_test_5001_Moudle_pandas

    import pandas as pd import numpy as np from lib_001_decorator_log_funcname import decorator_log_func ...

  10. 【Java学习Day08】数据类型、变量及字节

    数据类型 强类型语言 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 弱类型语言 要求变量的使用要符合规定,所有变量都必须先定义后才能使用 Java的两大数据类型 public clas ...