首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

call、apply和bind的区别

call、apply和bind这三个方法经常使用,但是具体有什么区别呢? 首先这三个方法的用法比较相似,但是作用,bind和前两者则完全不同。...call和apply是调用函数,bind却是返回一个新的函数。 下面看一下MDN对三者的解释: call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。...call和apply的不同点只有一点,那就是向函数传递参数的方式不同。call是逐个的向函数传递参数,apply是通过将参数以数组的形式传递到函数中。...下面总结了call和apply的一些常用的地方。...call和apply的相同点和不同点说完了,下面看一看bind的用法,前面一直重申函数调用bind后返回一个新的函数。并不像call和apply,直接调用函数。

74520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    apply、call、bind函数的区别

    apply、call、bind函数的区别一、前言大多数人都知道,使用apply、call、bind可以调用函数,并改变函数中this的指向。做一个简单记录,免得以后忘记了。...二、apply使用:函数.apply(obj, arg[])参数:第一个参数为函数中this指向的对象第二个参数是函数中原本的参数,由数组进行封装JAVASCRIPTvar user = { username...call、bind他们的异同点相同点:都可以改变函数中this的指向,且都将作为第一个参数进行使用不同点(传参方面)apply:在传入改变this的对象之后,将原来的函数参数,打包成一个数组进行传参call...:在传入改变this的对象之后,依次传入原本的函数参数bind:由于特性,它的传参分为一次参数和二次传参,一次传参与call相同;二次传参首次传参与call类似,后一次调用传参补全原函数剩余的参数不同点...(调用方面)apply、call:函数.apply()或者函数.call(),即可发起调用bind:先返回一个改变指向的函数,再通过这个函数进行调用我是半月,祝你幸福!!!

    9510

    对于bind、call、apply 区别?

    一、作用 call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢?...(obj),0); //martin,this指向obj对象 二、区别 下面再来看看apply、call、bind的使用 apply apply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数...[1,2]); // this指向window call call方法的第一个参数也是this的指向,后面传入的是一个参数列表 跟apply一样,改变this指向后原函数会立即执行,且此方法只是临时改变... ,bind不是立即执行需要执行一次 bindFn(1,2) // this指向obj fn(1,2) // this指向window 小结 从上面可以看到,apply、call、bind三者的区别在于...是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入   ④ bind是返回绑定this之后的函数,apply、call 则是立即执行 三、实现 实现bind

    28420

    JavaScript中apply、call、bind的区别与用法

    语法: func.apply(thisArg, [argsArray]) 1.2 Function.prototype.call() call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数...用法 这三个方法的用法非常相似,将函数绑定到上下文中,即用来改变函数中this的指向。 2.1 普通写法 ? 2.2 call 与apply方法的用法 ?...结果相同,call()和apply(),第一个参数都是要绑定上下文,后面的参数是要传递给调用该方法的函数的。...bind方法与call、apply最大的不同就是前者返回一个绑定上下文的函数,而后两者是直接执行了函数。因此,以上代码也可以这样写: ?...(3).三者都可以传参,但是apply是数组,而call是有顺序的传入。 (4).bind 是返回对应函数,便于稍后调用;apply 、call 则是立即执行 。 5.

    1.2K20

    call、apply、bind的应用和区别

    1. call( ) 面试中常问的Js中关于call、apply、bind的问题,比如: 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply、call...、bind的区别和主要应用场景 首先,要明白这三个函数的存在意义是什么?...区别 上面看起来三个函数的作用差不多,干的事几乎是一样的,那为什么要存在3个家伙呢,留一个不就可以。...所以其实他们干的事从本质上讲都是一样的动态的改变this上下文,但是多少还是有一些差别的.. ① call、apply与bind的差别 call和apply改变了函数的this上下文后便执行该函数,而bind...② call、apply的区别 他们俩之间的差别在于参数的区别,call和apply的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数

    38950

    JavaScript之apply()和call()的区别

    我 在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示 例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家分享...如有什么不对的或者说法不明确的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和call的区别在哪里 2.        ...apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用.         ...)          call:和apply的意思一样,只不过是参数列表不一样.  ...什么情况下用apply,什么情况下用call 在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型,并且在调用 Person的时候参数的列表是对应一致的

    67470

    call和 apply的区别是什么

    2015-07-12 15:02:21 一、方法的定义 call方法: 语法:call(thisObj,Object) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。...说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。...apply方法: 语法:apply(thisObj,[argArray]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。...window对象,其实myFun函数和定义的var money = 100;都作为window对象子对象(即全局对象) myFun.apply(window,[]); //save to window.myFun.apply...//这个时候myFun方法里面的this指向的是new Person('zhangsan',23)对象,二不是myFun类(函数),故弹出500 myFun.call(new Person('zhangsan

    52320

    js call()、apply()、bind()用法和区别

    特性: fun.call(thisArg,arg1,arg2,…) 会立即调用fun函数; call 方法将一个函数的对象上下文从初始的上下文改变为由 thisArg 指定的新对象,如果没有提供 thisArg...特性: fun.apply(thisArg,[arg1,arg2,…]) 会立即调用fun函数; apply方法将一个函数的对象上下文从初始的上下文改变为由 thisArg 指定的新对象,如果没有提供...this的函数 newFun(); // 3 4. call()、apply()和bind()的应用 1. call() call 常用来继承,因为ES6之前没有extends,用构造函数来模拟继承。...() apply 常用于与数组有关的操作,因为传递的参数是数组。...获取数组中的最大值与最小值: const arr = [1, 4, 7, -1]; Math.max.apply(Math, arr); // 7 Math.min.apply(Math, arr);

    1.1K30

    (七)call、bind、apply三者的区别

    一、call、bind、apply三者的区别 三者都可以改变函数的 this 对象指向。...bind 是返回绑定 this 之后的函数,便于稍后调用;apply 、call 则是立即执行 。...apply 写了就等于直接调用函数 区别于 call 就是后面参数的传入,其他都一样 food.apply(obj,[要传给函数的参数1,要传给函数的参数2...])...相同点 这三个都能够改变 this 指向 call 和 apply 的第一个参数都一样是要指向的 this ,写他们就等于写了函数的执行 call 和 bind 的参数设置相同 不同点 call 和...apply 的给函数传入的参数设置不一样,call 直接逗号隔开就好,apply 需要用数组 bind 不会立即执行,call 和 apply 都会立即执行 一文搞定this、apply、call、bindopen

    99120

    call和apply

    首先个人感觉call和apply还是挺神奇的,简简单单就改变了this的作用域,下面我们来共同学习一下 1.call和apply的语法(改变this的作用域,有点像冒充的感觉,例子如下) function.apply...); 了解: 调用call的对象必须是个函数function call的第一个参数将会是function改变上下文后指向的对象, 第二个参数开始可以接收任意个参数...,这些参数将会作为function的参数传入function 调用call的方法会立即执行 function People(name,skill){ this.name=name;...(person ,"啄木鸟","捉虫子"); people1.paly(); person.paly() 代码基本没变,就是把apply替换成了call,作用相同,两者最大区别就是传递参数的方式不同..., 通俗说 call传递参数是直接用双引号,然后一个接着一个传递 apply传递参数是通过一个数组的形式传递

    80130

    面试题解析——深入探究bind、call与apply的区别

    一、bind、call与apply的基本概念与用法1. bindbind方法用于创建一个新的函数,这个新函数的this值会被绑定到指定的对象上。...二、 bind、call与apply的区别详解1. 参数传递方式从上面的例子中我们可以看出,bind方法会创建一个新的函数,而call和apply则是直接调用函数。...返回值bind方法返回的是一个新的函数,这个新函数的this值已经被绑定;而call和apply则没有返回值(或者说返回undefined),它们只是简单地执行了函数。三、实际应用场景与案例分析1....使用call和apply实现继承JavaScript中的继承可以通过call和apply方法来实现。...我们详细探讨了bind、call和apply这三个方法的定义、用法以及它们之间的区别。希望通过这篇文章,你能更加清晰地理解这三个方法在实际开发中的应用。

    21710

    apply()、call()、bind()

    apply()、call()、bind() 每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域...使用 apply()、call()、bind()都能改变函数对象的this指向 window.name = "A"; //挂载到window对象的name document.name = "B"; //...); //B //绑定document对象 rollCall.sayName.apply(s); //C //绑定自定义对象 // call rollCall.sayName.call(); //A...虽然apply()、call()、bind()都能够达到改变this指针的目的,但是其使用还是有区别的 // apply与call传参方式不同 window.name = "Teacher"; var...rollCall.sayAllName.call(window,"A","B","C"); // Teacher A B C // bind 仅将对象绑定,并不立即执行,其返回值是一个函数,传参方式与

    70920

    区别和详解:js中call()和apply()的用法

    1、关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...: apply和call都能继承另外一个对象的方法和属性; Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组...,它将作为参数传给Function(args-->arguments) call:和apply的意思一样,只不过是参数列表不一样....,这样就将属性创建到了student对象里面 4、 什么情况下用apply,什么情况下用call 使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数...(Person.call(this,age,name,grade)); 5、apply的一些其他巧妙用法 细心的人可能已经察觉到,在我调用apply方法的时候,第一个参数是对象(this), 第二个参数是一个数组集合

    69120

    js中this指向问题及call,apply,bind的区别

    js中this指向问题及call,apply,bind的区别# 1 this指向# 1.1 what is 'this'?...1.2 标准函数与箭头函数的this指向# this在标准函数与箭头函数中的时会有两种不同类型的指向行为。...,apply,bind的区别# 相同点: 都可以改变函数的this指向 第一个参数为this将要指向的对象,后续的传参都是作为函数形参的值 不同点: call的后续传参是一个一个传,然后顺序对应;apply...的后续传参是以数组的形式,解析的时候也是跟call一样顺序对应; call、apply没有返回值,而bind改变完this指向后会返回一个改变完this指向之后的原函数的拷贝 可以再次进行调用。...例如: a.say.bind(b)('男', 'UNO') 运行的结果如下: 3 小结# 关于this指向、call、apply、bind的记录本篇就总结到这里,在日常使用脚手架、组件开发时可能会用的地方比较少

    1.2K20
    领券