为了账号安全,请及时绑定邮箱和手机立即绑定

哪位大神给讲解一下bind函数和this是怎么用的?

哪位大神给讲解一下bind函数和this是怎么用的?

xiaozhi1014 2016-05-26 23:34:59
我是新手 最好讲的通俗一点 容易理解 不知道bind和this怎么样去用 什么时候去用?谢谢了!!!
查看完整描述

4 回答

已采纳
?
baka_q

TA贡献5条经验 获得超11个赞

你说的是jQuery中的bind还是js函数的bind方法,jQuery中的bind没什么说的,就是事件绑定的东西

js中的bind用在你要使用的函数有用到this,而你在其他地方引用了这个函数,而且是以xxx.another = myfunction来引用的,这种引用方式在事件绑定,各种函数作为参数的时候出现,引用调用这个函数的操作是xxx.another(); 而不是直接myfunction(); 所以作用域就变成xxx了,而this只认作用域,就会出现预期之外的结果。

为了解决这个问题,ECMAScript5中对所有函数引入了方法bind(context),context代表作用域,比如上面例子的xxx,引入bind后可以这么写xxx.another = myfunction.bind(yourcontext);然后你的函数里的this就指向yourcontext而不是xxx了

bind的context参数后还可以接参数,不过那就是函数柯里化了,这个有兴趣可以去看看javascript高级程序设计的高级技巧中的函数柯里化

查看完整回答
5 反对 回复 2016-05-27
  • Iysin
    Iysin
    JS的那个解释有点看不懂...
  • baka_q
    baka_q
    建议去看看作用域,其实就是作用域绑定,和apply,call差不多,但是不需要参数
  • xiaozhi1014
    xiaozhi1014
    谢谢你们的耐心回复,还是不太理解,能不能举个例子啊?
点击展开后面2
?
淡雅的默

TA贡献102条经验 获得超139个赞

bind是给元素添加一个或者多个事件,this代表当前的元素;

如:

$("p").bind("click",function(){
     $(this).hide()
});


给元素p添加一个事件,而下面的this就是带表p本身,然后执行hide事件(隐藏)

查看完整回答
2 反对 回复 2016-05-27
?
xczzxc002

TA贡献24条经验 获得超19个赞

HTML
<div id='hello' >h</div>
Js
$('#hello').bind('click',function(){alert(this)});
返回
object
this指div标签,bind,第一个参数是事件,第二个参数是函数,意思是id为hello的标签绑定点击事件触发封装的函数,在函数里this指这个标签

查看完整回答
2 反对 回复 2016-05-27
?
星空下的小孩

TA贡献13条经验 获得超3个赞

你需要给一个元素绑定事件时就可以用bind,事件可以在jQuery手册上找,this,就是,谁调用就是谁,$("#btn").bind("click",function(){$(this).val("我就是this");}),这里的this就是id为btn  的那个元素。

查看完整回答
反对 回复 2016-05-28
  • 4 回答
  • 0 关注
  • 1777 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信