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 EasyPager 分页函数
May 25 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
Jun 08 Javascript
jquery+Jscex打造游戏力度条
Sep 12 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
May 16 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 Javascript
javascript操作向表格中动态加载数据
Aug 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
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
如何判断php mysqli扩展类是否开启
2016/12/24 PHP
PHP中cookie知识点学习
2018/05/06 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
jcrop基本参数一览
2013/07/16 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
Python中str is not callable问题详解及解决办法
2017/02/10 Python
基于python时间处理方法(详解)
2017/08/14 Python
python实现微信自动回复机器人功能
2019/07/11 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python绘制高斯曲线
2021/02/19 Python
大一自我鉴定范文
2013/10/04 职场文书
社区工作者思想汇报
2014/01/13 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书