美文网首页
bind()、apply() 和 call()

bind()、apply() 和 call()

作者: 噢是珊珊吖 | 来源:发表于2020-05-06 12:24 被阅读0次

    1. apply() 和call ()

    这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内的 this 对象的值。

    apply() 方法接收两个参数:一个是在其中运行的函数的作用域,另一个是参数数组。其中第二个参数可以是 Array 的实例,也可以是 arguments 对象。

    call() 方法和 apply() 方法的作用相同,它们的区别仅在于接收参数的方式不同。对于 call() 方法而言,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用 call() 方法时,传递给函数的参数必须逐个列举出来。

    它们真正强大的地方是能够扩充函数赖以运行的作用域。

    2. bind()

    bind() 是 ECMAScript5 中新增的方法,这个方法会创建一个函数的实例,其 this 值会被绑定到传给 bind() 函数的值。

    可以通过如下代码实现这种绑定

    bind() 方法不仅仅是将函数绑定至一个对象,它还附带一些其他应用:除了第一个实参之外,传入 bind() 的实参也会绑定至 this,这个附带的应用是一种常见的函数式编程技术,有时也被称为 “柯里化”。

    相关文章

      网友评论

          本文标题:bind()、apply() 和 call()

          本文链接:https://www.haomeiwen.com/subject/hivightx.html