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实现图片放大镜效果的方法
Feb 27 Javascript
如何使用jquery easyui创建标签组件
Nov 18 Javascript
jQuery+ajax实现实用的点赞插件代码
Jul 06 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
手机端实现Bootstrap简单图片轮播效果
Oct 13 Javascript
JavaScript 控制字体大小设置的方法
Nov 23 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
深入探究AngularJs之$scope对象(作用域)
Jul 20 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
解决vue无法设置滚动位置的问题
Oct 07 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 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
一个ftp类(ini.php)
2006/10/09 PHP
php生成RSS订阅的方法
2015/02/13 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
python实现的jpg格式图片修复代码
2015/04/21 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
python打造爬虫代理池过程解析
2019/08/15 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
项目经理岗位职责
2013/11/11 职场文书
采购内勤岗位职责
2013/12/10 职场文书
会计求职信范文
2014/05/24 职场文书
司法助理专业自荐书
2014/06/13 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
详解Flask开发技巧之异常处理
2021/06/15 Python
Python保存并浏览用户的历史记录
2022/04/29 Python