JavaScript 中的 Function.prototype.bind



bind()是ES5中新增的方法,我们可以在ES3中模拟实现bind()方法。

ps: function f(y){return this.x+y};
     var o={x:1};
     var g=f.bind(o);
     g(2);//=>3
     //通过调用g(x)来调用o.f(x)

我们在Function.prototype中定义一个b方法,使所有的function可以使用我们自己定义的b方法。
Function.prototype.b = function(scope) {
	       var fn = this;
	       alert(this)//function f(){alert("nihao");}
	       return function() {
		      return fn.apply(scope);
	       };
        }
		function f(){alert("nihao");}
		var o={};
		var g=f.b(o);
		g();

在实现b方法的时候alert(this),会弹出调用b方法的函数,由此可见bind的实现过程是传入你想要被绑定的方法,并且在
函数体内实现闭包返回一个由apply实现的函数调用





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值