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 相关文章推荐
JS方法调用括号的问题探讨
Jan 24 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
详谈JavaScript 匿名函数及闭包
Nov 14 Javascript
Mvc提交表单的四种方法全程详解
Aug 10 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 Javascript
bootstrap PrintThis打印插件使用详解
Feb 20 Javascript
Vue关于数据绑定出错解决办法
May 15 Javascript
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 Javascript
JS实现数组去重方法总结(六种方法)
Jul 14 Javascript
微信小程序实现下拉刷新动画
Jun 21 Javascript
layui表格分页 记录勾选的实例
Sep 02 Javascript
基于Vue中使用节流Lodash throttle详解
Oct 30 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 chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
Dojo 学习要点
2010/09/03 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
python定时任务 sched模块用法实例
2019/11/04 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
python编写实现抽奖器
2020/09/10 Python
python解包用法详解
2021/02/17 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
小学趣味运动会加油稿
2014/09/25 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android
Redis数据同步之redis shake的实现方法
2022/04/21 Redis