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 相关文章推荐
不同浏览器的怪癖小结
Jul 11 Javascript
JavaScript初学者需要了解10个小技巧
Aug 25 Javascript
jquery动态加载图片数据练习代码
Aug 04 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
Mar 21 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
Jan 30 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
Apr 27 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
JS获取父节点方法
2009/08/20 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
Node.js学习入门
2017/01/03 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
聊聊python中的异常嵌套
2020/09/01 Python
简单介绍Object类的功能、常用方法
2013/10/02 面试题
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
秋季运动会加油稿200字
2014/01/11 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
环境科学专业求职信
2014/08/04 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
优秀团支部申报材料
2014/12/26 职场文书
小孩不笨观后感
2015/06/03 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
人民币符号
2022/02/17 杂记