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 相关文章推荐
jQuery实现的Div窗口震动特效
Jun 09 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
Jan 28 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
Feb 11 Javascript
jQuery实现图片左右滚动特效
Apr 20 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
浅谈vue首屏加载优化
Jun 28 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 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一个解析字符串排列数组的方法
2015/05/12 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
js控制input输入字符解析
2013/12/27 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
React如何避免重渲染
2018/04/10 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
Python实现简单多线程任务队列
2016/02/27 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python Django 命名空间模式的实现
2019/08/09 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
采购部主管岗位职责
2014/01/01 职场文书
公司培训心得体会
2014/01/03 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
岗位聘任报告
2015/03/02 职场文书
个人售房合同协议书
2016/03/21 职场文书