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 21 Javascript
常用Extjs工具:Extjs.util.Format使用方法
Mar 22 Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
Javascript基础教程之关键字和保留字汇总
Jan 18 Javascript
javascript生成大小写字母
Jul 03 Javascript
jQuery实现三级菜单的代码
May 09 Javascript
使用Sonarqube扫描Javascript代码的示例
Dec 26 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
ES6 Object.assign()的用法及其使用
Jan 18 Javascript
JavaScript组合继承详解
Nov 07 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
js使用心得分享
2015/01/13 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
美国保健品专家:Life Extension
2018/05/04 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
电大自我鉴定
2013/10/27 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
幼师求职自荐信
2015/03/26 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
师范生教育见习总结
2015/06/23 职场文书
学生会自荐信
2019/05/16 职场文书
vue中 this.$set的使用详解
2021/11/17 Vue.js