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之一(对象的组成)
Jun 11 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
JavaScript基于setTimeout实现计数的方法
May 08 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
Feb 23 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
小程序实现列表删除功能
Oct 30 Javascript
Vue.js的复用组件开发流程完整记录
Nov 29 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
用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入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
php桥接模式应用案例分析
2019/10/23 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python深入学习之上下文管理器
2014/08/31 Python
python文件的md5加密方法
2016/04/06 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python tkinter三种布局实例详解
2020/01/06 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
广告设计应届生求职信
2014/03/01 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
2015年女职工工作总结
2015/05/15 职场文书
大学生读书笔记大全
2015/07/01 职场文书