学习
实践
活动
专区
工具
TVP
写文章

对于bind、call、apply 区别

一、作用 call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢? 所以输出luck 我们实际需要的是this指向obj对象,这时候就需要该改变this指向了 setTimeout(obj.say.bind(obj),0); //martin,this指向obj对象 二、区别 下面再来看看apply、call、bind的使用 apply apply接受两个参数,第一个参数是this的指向,第二个参数是函数接受的参数,以数组的形式传入 改变this指向后原函数会立即执行,且此方法只是临时改变 、call、bind三者的区别在于: ① 三者都可以改变函数的this对象指向 ② 三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null,则默认指向全局window ③ 三者都可以传参,但是apply是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入   ④ bind是返回绑定this之后的函数,apply、call

7520
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

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

    call、apply、bind的应用和区别

    1. call( ) 面试中常问的Js中关于call、apply、bind的问题,比如: 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply、call 、bind的区别和主要应用场景 首先,要明白这三个函数的存在意义是什么? 区别 上面看起来三个函数的作用差不多,干的事几乎是一样的,那为什么要存在3个家伙呢,留一个不就可以。 ② call、apply区别 他们俩之间的差别在于参数的区别,call和apply的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数 下就只能通过循环一个个加到数组中了: for (var i = 0; i < oLis.length; i++) { ary[ary.length] = oLis[i]; } 基于IE6~8和标准浏览器中的区别

    10450

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

    语法 1.1 Function.prototype.apply() apply() 方法调用一个函数, 其具有一个指定的this值,以及作为一个数组(或类似数组的对象)提供的参数。 2.2 call 与apply方法的用法 ? 结果相同,call()和apply(),第一个参数都是要绑定上下文,后面的参数是要传递给调用该方法的函数的。 bind方法与call、apply最大的不同就是前者返回一个绑定上下文的函数,而后两者是直接执行了函数。因此,以上代码也可以这样写: ? 3.5 利用call和apply做继承 ? 3.6 使用 log 代理 console.log ? 4. 总结 (1).三者都可以改变函数的this对象指向。 (3).三者都可以传参,但是apply是数组,而call是有顺序的传入。 (4).bind 是返回对应函数,便于稍后调用;apply 、call 则是立即执行 。 5.

    37620

    区别和详解: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的意思一样,只不过是参数列表不一样. ,什么情况下用call 使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型。 ([param1,param2]) 也就是数组 但是它支持Math.max(param1,param2,param3…),所以可以根据刚才apply的那个特点来解决 var max=Math.max.apply

    15320

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

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

    9020

    Kotlin中let()with()run()apply()also()函数的使用方法与区别

    1、apply函数使用的一般结构 object.apply{ //todo } 2、apply函数的inline+lambda结构 @kotlin.internal.InlineOnly public inline fun <T T.apply(block: T.() - Unit): T { block(); return this } 3、apply函数的inline结构分析 从结构上来看apply apply{ //questionnaire不为空的时候操作questionnaire }?.section?.apply{ //section不为空的时候操作section }?. T.also(block: (T) - Unit): T { block(this); return this } 3、also函数的inline结构分析 also函数的结构实际上和let很像唯一的区别就是返回值的不一样 一般可用于多个扩展函数链式调用 6、also函数使用前后的对比和let函数类似 七、let,with,run,apply,also函数区别 通过以上几种函数的介绍,可以很方便优化kotlin中代码编写,

    50920

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 人脸识别

      人脸识别

      腾讯云神图·人脸识别基于腾讯优图世界领先的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸验证、人脸查重、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券