JavaScript中的bind

本文详细介绍了JavaScript中bind方法的应用,包括如何改变上下文的this指向及如何绑定参数表,同时还对比了bind在jQuery和原生JS中的不同用法。

JavaScript中的bind
在jquery中,也有bind方法,其作用被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。主要使用如下:
$("#test").bind("click", function() {
   console.log("hello world!");
});
但是在原生js中,bind的用法有如下作用:
(1)改变上下文的this,bind和call还有apply一样,也有这个作用,bind函数定义为:
func.bind(thisArg [, arg1 [, arg2, …]]);其中func是待绑定函数,thisArg是改变的上下文对象,arg1、arg2是绑定的参数表,bind方法返回值是上下文为thisArg的func,通过下面例子可以理解bind的使用方法:
var some = {
    name: 'sunshine',
    func:function(){
      console.log(this.name);
    }
};
var foo = {
    name:'foobar'
};

foo.func = some.func;
foo.func(); //输出foobar

foo.func1 = some.func.bind(some);
foo.func1();  //输出sunshine

func = some.func.bind(foo);
func();  //输出foobar
foo.func1使用了bind方法,将some作为this指针绑定到some.func,调用foo.func1()时,this指针为some,所以输出的结果为sunshine,其他的分析如上。

(2)使用bind绑定参数表
例如:
var person = {
    name : 'sunshine',
    says : function(act,obj){
      console.log(this.name+' '+act+' '+obj);
    }
};

person.says('hello','world');  //输出sunshine hello world

yf = person.says.bind(person,'loves');
yf('you');  //sunshine loves you
可以看到,yf将this指针绑定到了person,并将第一个参数绑定到loves,之后再调用yf时,只需传入第三个参数,这个特性可以用于创建一个函数的"捷径",之后我们可以通过这个"捷径"调用,以便在代码多处调用时省略重复输入相同的参数。
还有关于bind的一些讲解的,看到了张鑫旭空间里发表的,感觉很好玩,而且元芳在里面有很大的作用呢,哈哈,在此贴上链接。

http://www.zhangxinxu.com/wordpress/2012/10/ecmascript-es5-bind-array-slice-call-apply/

转载于:https://my.oschina.net/sunshinewyf/blog/633076

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值