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 相关文章推荐
document.createElement()用法
Mar 13 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
Nov 07 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
每天一篇javascript学习小结(Array数组)
Nov 11 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
vue.js学习笔记:如何加载本地json文件
Jan 17 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
解决使用vue.js路由后失效的问题
Mar 17 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 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
实用函数7
2007/11/08 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
vue实现简单图片上传
2020/06/30 Javascript
pygame实现简易飞机大战
2018/09/11 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
python实现KNN近邻算法
2020/12/30 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
C语言笔试题回忆
2015/04/02 面试题
矫正人员思想汇报
2014/01/08 职场文书
全国道德模范事迹
2014/02/01 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
委托书范文
2014/04/02 职场文书
六一亲子活动总结
2014/07/01 职场文书
公司演讲稿开场白
2014/08/25 职场文书
学校捐书倡议书
2015/04/27 职场文书
杨善洲观后感
2015/06/04 职场文书
春风化雨观后感
2015/06/11 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书