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 相关文章推荐
JS面向对象编程 for Cookie
Sep 19 Javascript
jQuery实现锚点scoll效果实例分析
Mar 10 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
详解Node全局变量global模块
Sep 28 Javascript
vue2.x select2 指令封装详解
Oct 12 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
express.js中间件说明详解
Mar 19 Javascript
webpack4 从零学习常用配置(小结)
May 28 Javascript
node获取客户端ip功能简单示例
Aug 24 Javascript
微信小程序背景音乐开发详解
Dec 12 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
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
Javascript模块模式分析
2008/05/16 Javascript
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python生成器的使用方法
2013/11/21 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python正则中最短匹配实现代码
2018/01/16 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
质量在我心中演讲稿
2014/09/02 职场文书