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 相关文章推荐
javascript实现的使用方向键控制光标在table单元格中切换
Nov 17 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
Mar 05 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
JavaScript中Array的实用操作技巧分享
Sep 11 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
基本DOM节点操作
Jan 17 Javascript
npm配置国内镜像资源+淘宝镜像的方法
Sep 07 Javascript
js尾调用优化的实现
May 23 Javascript
js实现中文实时时钟
Jan 15 Javascript
JavaScript多种图形实现代码实例
Jun 28 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中的array数组类型分析说明
2010/07/27 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
jQuery Ajax使用 全解析
2010/12/15 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
node.js实现快速截图
2016/08/27 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
js css自定义分页效果
2017/02/24 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
深入源码解析Python中的对象与类型
2015/12/11 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
会计与审计毕业生自荐信范文
2013/12/30 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
汽修专业自荐信
2014/07/07 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
服务明星事迹材料
2014/12/29 职场文书
单位接收函范文
2015/01/30 职场文书
各国货币符号大全
2022/02/17 杂记
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers