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 相关文章推荐
function, new function, new Function之间的区别
Mar 08 Javascript
5个javascript的数字格式化函数分享
Dec 07 Javascript
JavaScript mapreduce工作原理简析
Nov 25 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
Oct 23 Javascript
json实现前后台的相互传值详解
Jan 05 Javascript
JS截取与分割字符串常用技巧总结
Nov 10 Javascript
详解Angularjs中的依赖注入
Mar 11 Javascript
Angular实现响应式表单
Aug 04 Javascript
Vue的百度地图插件尝试使用
Sep 06 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
浅谈JS的原型和原型链
Jun 04 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中路径问题的解决方案
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
jQuery的学习步骤
2011/02/23 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python中装饰器级连的使用方法示例
2017/09/29 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Spy++的使用方法及下载教程
2021/01/29 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
工程项目经理岗位职责
2013/12/15 职场文书
护士长竞聘书
2014/03/31 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
武夷山导游词
2015/02/03 职场文书
写给老师的保证书
2015/05/09 职场文书
公司新员工欢迎词
2015/09/30 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
mysql中整数数据类型tinyint详解
2021/12/06 MySQL