zoukankan      html  css  js  c++  java
  • javascript中call()、apply()、bind()的用法理解

    一、bind的用法

    第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age

    第二个:obj.showInfo.bind(this)('bind','bind_18');中bind要传的name和age是通过一个一个传的形式,然后通过showInfo方法改变的是window下的name和age

    注:bind 返回的是一个新的函数,你必须调用它才会被执行

    二、apply的用法

    第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age

    第二个:obj.showInfo.apply(this,['apply','apply_18']);中apply要传的name和age是通过数组的形式,然后通过showInfo方法改变的是window下的name和age

    二、call的用法

    第一个:obj.showInfo('arg','arg_18');中传的2个参数通过showInfo方法改变的是obj下中的name和age

    第二个:obj.showInfo.call(this,'call','call_18');中call要传的name和age是通过一个一个传的形式,然后通过showInfo方法改变的是window下的name和age

    总结:
        1、call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象
        2、call的参数是直接放进去的,第二第三第n个参数全都用逗号分隔
        3、apply的所有参数都必须放在一个数组里面传进去
        4、bind除了返回是函数以外,它的参数传递方式和call 一样。    
        当然,三者的参数不限定是string类型,允许是各种类型,包括函数 、 object 等等!
  • 相关阅读:
    Swizzle在OC问题排查中的应用
    MacOS中系统提供的音频单元
    Mac catalyst 使用iOS-AudioUnit的音频采集、播放
    删除单向链表中的某一个节点
    C语言的的free和c++的delete的区别
    Mac下使用源码编译安装TensorFlow CPU版本
    ROC曲线与AUC值
    Linux中如何产生core文件?
    更改Linux默认栈空间的大小
    互信息(Mutual Information)
  • 原文地址:https://www.cnblogs.com/ycg-myblog/p/10161209.html
Copyright © 2011-2022 走看看