使用bind方法确定接收者

本文介绍了一个简单的JavaScript缓冲区实现方式,通过定义一个包含添加和连接字符串功能的对象来处理字符串数组。探讨了如何利用forEach循环结合bind函数正确地将字符串元素添加到缓冲区,并最终输出拼接后的完整字符串。
 1 var buffer = {
 2     entries : [],
 3     add : function(s){
 4         this.entries.push(s);
 5     },
 6     concat : function(){
 7         return this.entries.join("");
 8     }
 9 }
10 
11 var source = ["867","-","5309"];
12 source.forEach(buffer.add);  //error : entries is undefined
13 
14 
15 var source = ["867","-","5309"];
16 source.forEach(buffer.add,buffer);   //"867-5309"
17 
18 var source = ["867","-","5309"];
19 source.forEach(function(s){
20     buffer.add(s);
21 })
22 buffer.join(); //"867-5309"

还可以使用bind()函数,该是创建一个新函数而不是修改了buffer.add()函数,新函数的行为就像原来函数的行为,但它的接收者绑定到了buffer对象,而原有函数的接收者保持不变:

注意:提取一个方法不会将方法的接收者绑定到该方法的对象上

 1 var source = ["867","-","5309"]; 2 source.forEach(buffer.add.bind(buffer)); 3 buffer.join(); //"867-5309" 

转载于:https://www.cnblogs.com/zhanghuiyun/p/5912839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值