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.刚才汤姆兴奋地踢着足球翻译 4.放学后的校园静态描写一段话 如何教育孩子整理收纳自己的物品? 引导收纳意识 收纳条件创造好了,要怎样让孩子学会自己收玩具呢? 小朋友是非常有灵性的,这点我们大人远不如他们。每次嘟宝耍赖不收玩具的时候,我都会蹲下来平视跟她说,“玩具他们想回家了,你能送他们回家吗?”在嘟宝的认知里,回家是一件很重要的事情。所以她就会把玩具收好。 孩子收玩具并不像你想象那么快,所以一定不要催促他们快点完成,那样他们会变得慌张,无法自己完成,从而转向哭闹. 作为家长的我们一定要有耐心。 如何通过玩玩具 培养孩子专注力? 1. 孩…

    2022年06月07日
    16
  • do the dishes和Wash the dishes ,她在洗碗用英语怎么说

    本文目录 1.她在洗碗用英语怎么说 2.洗碗可以用wash the dishes吗 3.do the dishes和wash the dishes有什么区别 4.关于做家务的英语短语有哪些 她在洗碗用英语怎么说 wash the dishes 洗碗,洗盘子 短语 I Wash The Dishes 我洗盘子 They Wash The Dishes 他们洗盘子 Wash the dishes clean 将盘子洗干净 I can wash the dishes 我会洗碗 例句 1、When you'vehad plenty, you might offer to clear the table…

    2022年06月08日
    16
  • 不定代词笔记 ,不定代词no one的用法

    本文目录 1.不定代词no one的用法 2.复合不定代词的用法 3.英语代词知识点总结 4.不定代词指someone先行词的定语从句 不定代词no one的用法 这道题是对的!! -How many students did you see in the classroom. -__________. A.Nobody. B.No one. C.None. D.Not many 这道题中问句中出现名词students,所以用none none指上文出现的那个名词 若上文没有出现所要回答的名词用nothing (指物)no one(指人) how many/much用none回答 记得我们老师…

    2022年06月08日
    16
  • nor的倒装句用法总结 ,so neither nor倒装句讲解ppt

    本文目录 1.so neither nor倒装句讲解ppt 2.nor引导的倒装句例句 3.neither...nor和either...or的区别 4.nor后面要倒装吗 so neither nor倒装句讲解ppt 当副词so放在句首时,如果表示“也”的时候,前面一般是肯定句,而后面的句子要用倒装句。 但是,当副词so的前后两个主语相同,so后面就不倒装了,动词be和助动词要放在主语的前面。 neither和nor表示“也不”,放在句首的时候,前面为否定句,后面的句子是倒装句。 希望我能帮助你解疑释惑。 nor引导的倒装句例句 Nor did he let the disease stop…

    2022年06月08日
    16
  • 人体部位思维导图 英文 ,十二个身体部位英文怎么发音

    本文目录 1.十二个身体部位英文怎么发音 2.人体的身体部位用英语怎么说 3.人体各个器官英语怎么读 4.人身体部位的英文名称 十二个身体部位英文怎么发音 身体各部位名称的英语:head 头、throat 咽喉、armpit hair 腋毛、chest 胸部、pit 胸口、navel 肚脐、abdomen 腹部、thigh 大腿、neck 脖子、shoulder 肩、heart心脏、waist 腰、hip 臀部、cerebellum小脑、Cerebrum 大脑、手 hand 、脚 foot、眼睛 eye、耳朵 ear等。 1、眼睛(英语:eye) 是一种人体器官,位于头部,左右成对。与其它哺乳…

    2022年06月08日
    16
  • there be结构的句子举例 ,用there be句型写五个句子

    本文目录 1.用there be句型写五个句子 2.there be句型有哪些 3.there be是什么句型 4.there be句型有哪些知识点 用there be句型写五个句子 There is a horse in the field. 田地里有一匹马 There is an egg in the basket. 篮子里有一个鸡蛋。 There is a book on the desk. 桌子上有一本书 There was a football match last night. 昨晚有一场足球赛 5. There are five clsses today. 今天有五节课 Ther…

    2022年06月08日
    16
  • only if倒装句例句0个 ,only if后面用倒装吗

    本文目录 1.only if后面用倒装吗 2.only倒装用法总结 3.only if放在句首要不要倒装 4.only引导的倒装句是什么意思 only if后面用倒装吗 only在句首要倒装的情况 Only in this way, can you learn English well. Only after being asked three times did he come to the meeting. 如果句子为主从复合句,则主句倒装,从句不倒装 Only when he is seriously ill, does he ever stay in bed. only if 的倒装情…

    2022年06月08日
    16
  • 八大句子成分缩写 ,主语谓语宾语的英文缩写

    本文目录 1.主语谓语宾语的英文缩写 2.英语句子成分的缩写怎么写? 3.英语中句子成分的英文表达缩写 4.主语谓语宾语的英文缩写 主语谓语宾语的英文缩写 现代汉语句子成分名称(主语、谓语、宾语、定语、状语、补语等)的英文缩写,分列如下: 1、主语是“S”,是英语单词Subject第一个字母的大写。 2、谓语是“Pred”,是英语单词predicate的前四个字母,其中第一个字母大写,其它三个字母是小写。 3、宾语是“O”,是英语单词Object第一个字母的大写。其中直接宾语是DO,间接宾语INO。 4、定语是(Att),是英语单词Attribute前面的三个字母,其中第一个字母是大写,后面两…

    2022年06月07日
    16