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 相关文章推荐
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 Javascript
vue之数据交互实例代码
Jun 20 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 Javascript
javascript实现拖拽碰撞检测
Mar 12 Javascript
JavaScript实现音乐播放器
Aug 14 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数组函数array_key_exists()小结
2015/12/10 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
Web开发之JavaScript
2012/03/29 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
使用python实现BLAST
2018/02/12 Python
Win8下python3.5.1安装教程
2020/07/29 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
介绍一下linux文件系统分配策略
2013/02/25 面试题
银行职业规划书范文
2013/12/28 职场文书
顶岗实习接收函
2014/01/09 职场文书
毕业生自荐书
2014/02/02 职场文书
初一语文教学反思
2016/03/03 职场文书
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang