javascript如何使用bind指定接收者


Posted in Javascript onMay 04, 2014
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 相关文章推荐
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
jquery调用asp.net 页面后台的实现代码
Apr 27 Javascript
基于jQuery的360图片展示实现代码
Jun 14 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
js打开新窗口方法整理
Feb 17 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
javascript 广告移动特效的实现代码
Jun 25 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
利用JavaScript将Excel转换为JSON示例代码
Jun 14 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 Javascript
用jquery.sortElements实现table排序
May 04 #Javascript
jquery实现的鼠标拖动排序Li或Table
May 04 #Javascript
自己用jQuery写了一个图片的马赛克消失效果
May 04 #Javascript
javascript实现2048游戏示例
May 04 #Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 #Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 #Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 #Javascript
You might like
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
js实现无缝轮播图
2020/03/09 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
Python基类函数的重载与调用实例分析
2015/01/12 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
Numpy掩码式数组详解
2018/04/17 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
Python 如何实现访问者模式
2020/07/28 Python
python 利用zmail库发送邮件
2020/09/11 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
九年级数学教学反思
2014/02/02 职场文书
建筑工地文明标语
2014/10/09 职场文书
2014年财政所工作总结
2014/11/22 职场文书
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang