javascript中bind()函数实现和应用以及多次bind的结果和参数位置的思考

概述

在ECMA-262第五版引入了bind()方法,该方法创建一个新函数。

语法

fn.bind(context[, arg1[, arg2[, ...]]])
第一个参数context将成为返回的新函数的this对象
第二个及以后的参数加上绑定函数运行时本身的参数按照顺序,将作为新函数的擦书

实现原理

Function.prototype.bind = function (context) {
	// 调用Array的方法来切割伪数组对象arguments
	// 由此获此bing()方法传进来的第二个及以后的参数
	var args = Array.prototype.slice.call(arguments, 1);
	return function () {
		return this.apply(context, args.concat(Array.prototype.slice.call(arguments)));
	};
};
其核心思想就是返回一个函数,函数里是通过用apply指定this值的原函数的返回值。

常见应用场景

  • 改变对象方法里this的值
var ob = {
	name: 'joe',
	getName: function () {
		alert(this.name);
	}
};
// 改变getName方法里原本的this对象为新对象{name: 'haha'}
var app = ob.getName.bind({name: 'haha'});
app();<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值