手写bind

手写bind

Function.prototype.bind1 = function(){
	// 获取传入的参数,并转换成数组
	let args = Array.prototype.slce.call(arguments);
	// 获取数组的第一项为需要返回的指定this
	let _this = args.shift();
	// 获取调用者-原始this
	let self = this;
	// 返回一个新的方法
	return function(){
		return self.apply(_this, args);
	}
}

注:1、Array.prototype.slce会返回一个新的数组;
2、call()和apply():
相同:都可以改变this的指向,在不传入需要指向的对象时,则指向Global对象;
传入时的第一个参数为this指向
不同:apply只能传递两个参数,第二个参数为数组;
call可以传递多个参数

上一篇:前端入门知识点笔记本


下一篇:VUE中v-bind动态绑定style