bind() 方法的简单实现
bind() 函数的用法
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
和 call() 方法不同的是,call() 方法只会临时改变一次 this 指向,并立即执行,而 bind() 方法是返回一个 this 改变后的函数,并且不会立即执行。
bind() 函数的实现
(function () {
Function.prototype.bind = function () {
let args = arguments;
return () => {
return this.apply(args[0], [...args].slice(1));
};
};
})();
解释
-
args获取bind()函数参数伪数组的引用,由于是伪数组,并不能直接调用slice()方法,所以通过解构赋值转成真数组后调用slice()方法,将bind()方法第二个及之后的参数合并为数组并传给apply()函数作为第二个参数 -
由于
this要指向调用bind()的函数,故只能采用箭头函数的形式,也可以写成如下形式:(function () { Function.prototype.bind = function () { let that = this, args = arguments; return function() { return that.apply(args[0], [...args].slice(1)); }; }; })();

本文介绍了JavaScript中bind()方法的基本概念及其使用方式。bind()方法能够创建一个新的函数实例,在调用时预设this的指向以及部分参数。文章还对比了bind()与call()的区别,并提供了bind()的一个简单实现。
1562

被折叠的 条评论
为什么被折叠?



