javascript如何使用bind指定接收者

 更新时间:2014年05月04日 17:18:25   作者:  
这篇文章主要介绍了javascript如何使用bind指定接收者,需要的朋友可以参考下
复制代码 代码如下:

var json = {
jArray: [],
jPush: function (c) {
this.jArray.push(c);
}
}
var examp = ["123", "~", "456"];

使用ES5给出的forEach循环examp,并且将它们添加到json中的jArray中;
复制代码 代码如下:

examp.forEach(json.jPush);

这个时候会报错:
 

产生这种报错的原因是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方法的使用是非常安全的,因为一个函数或方法被共享的时候,不用担心这个共享方法不会被修改掉了.

相关文章

  • JS中使用 after 伪类清除浮动实例

    JS中使用 after 伪类清除浮动实例

    这篇文章主要介绍了使用 after 伪类清除浮动实例,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-03-03
  • 一文带你深入理解JavaScript模板引擎

    一文带你深入理解JavaScript模板引擎

    在Web前端开发中,需要将数据动态渲染到页面上,随着应用程序的复杂度增加,数据渲染的逻辑也变得越来越复杂,这时候就需要使用模板引擎来帮助我们动态生成HTML标记,本文将深入介绍 JavaScript 模板引擎,帮助读者更好地理解和应用模板引擎
    2023-06-06
  • js中字符型和数值型数字的互相转化方法(必看)

    js中字符型和数值型数字的互相转化方法(必看)

    下面小编就为大家带来一篇js中字符型和数值型数字的互相转化方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 用javascript实现画板的代码

    用javascript实现画板的代码

    用javascript实现画板的代码...
    2007-09-09
  • JavaScript 判断数据类型的4种方法

    JavaScript 判断数据类型的4种方法

    这篇文章主要介绍了JavaScript 判断数据类型的4种方法,帮助大家更好的理解和学习JavaScript,感兴趣的朋友可以了解下
    2020-09-09
  • JavaScript中几种时间格式之间的简单转换

    JavaScript中几种时间格式之间的简单转换

    近期在练习或写项目时经常会遇到时间格式的转换问题,今天我就来总结一下,这篇文章主要给大家介绍了关于JavaScript中几种时间格式之间的简单转换,需要的朋友可以参考下
    2024-01-01
  • javascript检测flash插件是否被禁用的方法

    javascript检测flash插件是否被禁用的方法

    这篇文章主要介绍了javascript检测flash插件是否被禁用的方法,涉及JavaScript调用ActiveXObject组件操作flash插件的相关技巧,需要的朋友可以参考下
    2016-01-01
  • javascript根据时间生成m位随机数最大13位

    javascript根据时间生成m位随机数最大13位

    javascript根据时间生成m位随机数,最大13位随机数,并且不能保证首位不为0,实现代码如下,需要的朋友可以参考下
    2014-10-10
  • IE8 下的Js错误HTML Parsing Error...

    IE8 下的Js错误HTML Parsing Error...

    今天调试一段JS代码出现这个状况..在火狐 IE7 和IE6下都正常...郁闷,在网上搜索了一下相关资料 一般错误都是指所指定的标签没有加载完就是用该对象....
    2009-08-08
  • 原生js编写基于面向对象的分页组件

    原生js编写基于面向对象的分页组件

    这篇文章主要为大家详细介绍了原生js编写基于面向对象的分页组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论