网络编程 
首页 > 网络编程 > 浏览文章

javascript如何使用bind指定接收者

(编辑:jimmy 日期: 2025/12/28 浏览:3 次 )
复制代码 代码如下:
var json = {
jArray: [],
jPush: function (c) {
this.jArray.push(c);
}
}
var examp = ["123", "~", "456"];

使用ES5给出的forEach循环examp,并且将它们添加到json中的jArray中;
复制代码 代码如下:
examp.forEach(json.jPush);

这个时候会报错:
javascript如何使用bind指定接收者 

产生这种报错的原因是json.jPush方法中的this并没有指向json对象,而是指向了window.解决这个问题的方法就是给这个this找对人家.
好在forEach()提供了一个参数,专门用于指定对象的.看代码.
复制代码 代码如下:
examp.forEach(json.jPush,json);
alert(json.jArray);//结果正常了是,123~456

还有另外一种方法:
复制代码 代码如下:
examp.forEach(function (c) {
json.jPush(c);
});
alert(json.jArray);//123~456

还可以使用bind绑定
复制代码 代码如下:
examp.forEach(json.jPush.bind(json));
alert(json.jArray);

bind是创建了一个新函数而不是修改一个函数.新函数的行为和原来函数的行为一样,但他的接收者是我们给定的对象,而原有函数的接收者保持不变.
这意味着bind方法的使用是非常安全的,因为一个函数或方法被共享的时候,不用担心这个共享方法不会被修改掉了.
上一篇:javascript操作excel生成报表全攻略
下一篇:用jquery.sortElements实现table排序
一句话新闻
Windows上运行安卓你用过了吗
在去年的5月23日,借助Intel Bridge Technology以及Intel Celadon两项技术的驱动,Intel为PC用户带来了Android On Windows(AOW)平台,并携手国内软件公司腾讯共同推出了腾讯应用宝电脑版,将Windows与安卓两大生态进行了融合,PC的使用体验随即被带入到了一个全新的阶段。
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap