最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • call(),apply(),bind()区别与联系

    正文概述 掘金(咕叽a)   2021-08-16   563

    联系:

    call(),apply(),bind()的作用都是改变this指向

    call(),apply(),bind()三个方法的第一个参数都是相同的,就是this的指向

    区别--传入的参数

    apply

    apply()  方法调用一个具有给定this值的函数,以及以一个**数组(或类数组对象)**的形式提供的参数。

    它的第二个参数必须是数组(或arguments)。如果该参数的值为 null 或undefined,则表示不需要传入任何参数。

    当第二个参数是arguments时,它通常被用作被调用对象的所有未指定的参数。 这样,在使用apply函数的时候就不需要知道被调用对象的所有参数。 可以使用arguments来把所有的参数传递给被调用对象。

    用法:

    fn.apply(obj, [1, 2])
    

    call

    call()方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数

    call()用法和apply类似,区别在于,call() 方法接受的是一个参数列表

    用法:

    fn.call(obj, 1, 2)
    

    bind

    bind()使用方法和call()一致,只是应用场景有细微差别。 bind()  方法创建一个新的函数(绑定函数),在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用(意味着这个函数不会立即执行)。调用绑定函数通常会导致执行包装函数(原函数)

    用法:

    fn.bind(obj, 1, 2)
    

    this改变为obj了,但是绑定的时候立即执行,当触发点击事件的时候执行的是fn的返回值undefined

    document.onclick = fn.call(obj);
    

    bind会把fn中的this预处理为obj,此时fn没有执行,当点击的时候fn执行

    document.onclick = fn.bind(obj);
    

    另外,bind()并不支持IE6~IE8,会报错


    起源地下载网 » call(),apply(),bind()区别与联系

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元