首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

javascript中bind绑定接收者与函数柯里化

如果我要遍历一个数组,

我只要给forEach传一个匿名函数即可,很简单;

如果我已经把匿名函数抽象出来,做成了一个公共的方法

(可能其他地方也会用的到)

那么,这个遍历会是这样的;

注意:只要把方法对象传给forEach就可以喽,参数什么的,根本就不用关心;

如果这个方法在一个对象里,那也没什么问题:

但,如果涉及到对象的this,那就要出问题了:

输出:

这是因为,add方法执行的时候,this对象指向的并不是obj,而是forEach的对象,forEach的对象是全局对象golobal;

那想实现意图怎么办呢?

最low的办法就是给forEahc在套一个匿名函数

其次是给forEach方法再多传递一个参数:

这也不是什么好主意,forEach你可以多传一个obj进去,其他的类似forEach的方法,可不一定允许你多传一个对象进去哦!

更好的办法是:

bind创建了一个新函数,这个函数跟obj.add一样,唯一不同的是,新函数把this绑定了obj

也就是说把add方法绑定给了接收者obj;

现在假设我们的add方法,还需要另外一个参数title,而且这是第一个参数:

那该如何是好呢?

你可以直接在bind方法里直接传递这个参数:

最终的代码是:

输出结果是:

将函数与其参数的一个子集绑定的技术称为函数的柯里化;

比起显式的封装函数,这样做更简洁!

(一般人也更不容易看懂你的代码,哈哈哈!)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191014A04SSS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券