call和apply和bind的区别和作用 ,js中call和apple

本文目录

js中call和apple


1、call,apply和bind的区别
它们在功能上是没有区别的,都是改变this的指向,它们的区别主要是在于方法的实现形式和参数传递上的不同。call和apply方法都是在调用之后立即执行的。而bind调用之后是返回原函数,需要再调用一次才行,
2、①:函数.call(对象,arg1,arg2....)
②:函数.apply(对象,[arg1,arg2,...])
③:var ss=函数.bind(对象,arg1,arg2,....)
3、总结一下call,apply,bind方法:
a:第一个参数都是指定函数内部中this的指向(函数执行时所在的作用域),然后根据指定的作用域,调用该函数。
b:都可以在函数调用时传递参数。call,bind方法需要直接传入,而apply方法需要以数组的形式传入。
c:call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。有点闭包的味道。
d:改变this对象的指向问题不仅有call,apply,bind方法,也可以使用that变量来固定this的指向。

call和apply和bind的区别和作用
,js中call和apple图1

Javascript addEventListener


apply方法和call方法的意义一样、都是函数的调用。
比如:functionA.call(null, param1, param2,...)、functionB.apply(null, paramArray)。
他们的第一个参数都是上下文,当第一个参数是null时、传递的上下文是window。他们的区别只是后面的参数、call方法是把要传递的参数一个个都列出来、apply方法是传递一个参数数组。
bind方法稍微有些不同、bind方法不会立即执行函数(上面的call和apply会立即执行函数)、而是返回修改后的函数、要执行需要()、另外bind可以在执行时传递参数。
比如:
var functiOnC= function(param1, param2,param3){.........};
var d = functionC .bind(null, "param1");
d("param2", "param3");//执行

call和apply和bind的区别和作用
,js中call和apple图2

Javascript addEventListener


要说他们三的区别,首先需要清楚,其实 apply 、 call 、bind 三者都是用来改变函数的this对象的指向的,并且三者第一个参数都是this要指向的对象,也就是想指定的上下文;三者都可以利用后续参数传参。

对于 apply、call 二者而言,作用完全一样,只是接受参数的方式不太一样。第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始),如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1, [var1,var2,var3])。同时,使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。

所以从作用上讲,其实apply和call是一样的,他们和bind的区别就是bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

给你举个例子:


var obj = {
    x: 81,
};
  
var foo = {
    getX: function() {
        return this.x;
    }
}
  
console.log(foo.getX.bind(obj)());  //81
console.log(foo.getX.call(obj));    //81
console.log(foo.getX.apply(obj));   //81

三个输出的都是81,但是注意看使用 bind() 方法的,他后面多了对括号。


也就是说,区别是,当你希望改变上下文环境之后并非立即执行,而是回调执行的时候,使用 bind() 方法。而 apply/call 则会立即执行函数。

如果还不是很清楚,也可以看看


参考资料:***/47935982/blog/1439276777


call和apply和bind的区别和作用
,js中call和apple图3

Javascript addEventListener


三个的使用区别:
都是用来改变函数的this对象的指向的;
第一个参数都是this要指向的对象;
都可以利用后续参数传参;
bind是返回对应函数,便于稍后调用,apply、call是立即调用;

call和apply和bind的区别和作用
,js中call和apple图4

以上就是关于call和apply和bind的区别和作用 ,js中call和apple的全部内容,以及call和apply和bind的区别和作用 的相关内容,希望能够帮到您。

上一篇 2022年09月20日13时15分26秒
下一篇 2022年09月20日13时30分32秒

相关推荐

  • 日语平假名和片假名的区别

    本文目录 1.平假名 2.片假名 3.区别 日语是一种非常有趣的语言,它有三种不同的书写方式:汉字、平假名和片假名。其中,平假名和片假名是日语中最常用的两种书写方式。虽然它们看起来很相似,但实际上它们之间有着很大的区别。 平假名 平假名是日语中最基本的一种书写方式,它由46个不同的字母组成,每个字母都代表一个音节。与汉字不同,平假名的发音非常简单明了,因此很容易学习和记忆。 平假名通常用于书写日语…

    英语知识 2023年07月17日
    11
  • 日语口语感叹词

    日语是一种表达丰富、充满感情的语言。其中,感叹词是日语中非常重要的一部分,它们能够让我们更加生动地表达情感和态度。在日语中,感叹词通常用于口语表达,而且有很多种类。 首先,我们来看一些表示惊讶的感叹词,比如「あら」、「うわっ」、「びっくり」等。这些感叹词可以用在听到好消息或坏消息时,或者看到令人惊奇的事物时。例如:「あら、本当に?!」(哇,真的吗?!)、「うわっ、すごい!」(哇,太厉害了!)、「び…

    英语知识 2023年07月17日
    11
  • 现在完成时的问句

    本文目录 1.现在完成时的肯定问句 2.现在完成时的否定问句 3.现在完成时的特殊问句 现在完成时是英语语法中的一种时态,用于描述已经完成的动作或状态,通常用 have/has + 过去分词的形式表示。在实际交流中,我们经常会用到现在完成时的问句来询问或了解对方的经历或经验。下面就是一些关于现在完成时的问句的使用方法和注意事项: 现在完成时的肯定问句 现在完成时的肯定问句通常用来询问对方是否有过某…

    英语知识 2023年07月17日
    11
  • 我们是什么词性

    本文目录 1.名词 2.动词 3.形容词 4.副词 5.代词 6.介词 7.连词 英语是一门语法非常复杂的语言,它包含了许多种不同的词性。每个单词都有自己的词性,这些词性决定了这个单词在句子中所扮演的角色。那么,我们常见的英语词性有哪些呢? 名词 名词是英语中最基本的词性之一,它可以指示人、动物、物品、地点等。在句子中,名词通常充当主语、宾语或表语。 动词 动词是英语中最重要的词性之一,它通常用来…

    英语知识 2023年07月17日
    11
  • 间接引语什么时候时态不变

    在学习英语语法时,我们不可避免地会接触到直接引语和间接引语。直接引语是指直接引用别人说的话,而间接引语则是通过转述别人的话来表达意思。在英语语法中,间接引语的时态有时候是不需要改变的。 当我们将别人的话转述成间接引语时,一般需要将时态进行相应的改变,以保持语法的正确性。例如,如果直接引语为“Tom said, ‘I am going to the cinema tonight.’”,那么转换成间接…

    英语知识 2023年07月17日
    11
  • 能被2,3,5整除的数

    我们都知道,数学是一门非常重要的学科,而英语也是我们生活中必不可少的一部分。那么,今天我们来探讨一下与英语知识相关的数学问题——能被2,3,5整除的数。 首先,我们需要了解什么是被整除。被整除就是一个数可以被另一个数整除,而没有余数。举个例子,如果一个数可以被2整除,那么这个数必须是偶数,因为所有偶数都可以被2整除。 接下来,我们来看一下能被2,3,5整除的数。这些数被称为“丑数”,因为它们的因数…

    英语知识 2023年07月18日
    11
  • 如何锻炼孩子的语言表达能力

    本文目录 1. 阅读 2. 练习口语 3. 写作练习 4. 参与课堂 5. 多听多说 孩子的语言表达能力是非常重要的,它不仅可以帮助孩子更好地学习和交流,还能培养孩子的自信心和社交能力。以下是一些锻炼孩子语言表达能力的方法: 1. 阅读 阅读是培养孩子语言表达能力的重要途径。通过阅读,孩子可以接触到各种各样的语言表达方式,学习到不同的词汇和句型。家长可以鼓励孩子阅读各种类型的书籍,包括童话故事、小…

    英语知识 2023年07月17日
    11
  • 介词之后用宾格吗

    在英语中,介词是一类常见的词汇,它们通常用来表示时间、空间、方位等概念。然而,很多人在使用介词时会犯一个常见的错误,就是介词之后使用主格代词而不是宾格代词。 首先,我们需要知道什么是主格和宾格代词。主格代词通常用作主语或表语,例如:I、he、she、they等;而宾格代词则通常用作宾语,例如:me、him、her、them等。 在使用介词时,我们需要注意的是,介词通常会与宾格代词连用。例如: Sh…

    英语知识 2023年07月17日
    11