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 相关文章推荐
执行iframe中的javascript方法
Oct 07 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
jquery实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
基于javascript实现最简单的选项卡切换效果
May 16 Javascript
ReactNative Image组件使用详解
Aug 07 Javascript
node通过npm写一个cli命令行工具
Oct 12 Javascript
基于Three.js实现360度全景图片
Dec 30 Javascript
vue的keep-alive用法技巧
Aug 15 Javascript
Node.js Domain 模块实例详解
Mar 18 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
javascript中 try catch用法
2015/08/16 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
好邻里事迹材料
2014/01/16 职场文书
关于运动会的稿件
2014/02/02 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
咖啡店创业计划书
2014/08/15 职场文书
2014年小学教研工作总结
2014/12/06 职场文书
五四青年节活动总结
2015/02/10 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL