JavaScript bind() 方法的实现

本文探讨了JavaScript的bind()方法,介绍了其特点,包括创建新函数并设置this上下文,以及在作为构造函数使用时的行为。同时,文章还详细解释了两种bind()的实现方式,包括一个传统的实现方法和ES6版本的实现,并阐述了它们如何处理函数原型链。
摘要由CSDN通过智能技术生成

bind() 方法的特点

  • bind() 方法会创建一个新函数。
  • 当这个新函数被调用时,bind() 的第一个参数将作为它运行时的 this,
  • 可以把除了第一个参数以外的其他参数都传递给下层的函数(这种技术称为“部分应用”,是“柯里化”的一种)注①
  • 如果 bind() 返回的函数 作为构造函数使用,bind 时指定的 this 值会失效,但传入的参数有效。
    • new 调用返回的实例能够继承 绑定函数的原型 中的值

注①:

  • 来自《你不知道的JavaScript》
  • 关于局部应用与柯里化,引用 mqyqingfeng:

    • 柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个 n 元函数转换成 n 个一元函数。
    • 局部应用则是固定一个函数的一个或者多个参数,也就是将一个 n 元函数转换成一个 n - x 元函数。
    • 如果说两者有什么关系的话,引用 functional-programming-jargon 中的描述就是:Curried functions are automatically partially applied.

bind() 实现

方法一

Function.prototype.fakeBind = function<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值