bind函数介绍
bind
函数实际上是柯理化思想。大函数执行返回一个小函数,执行大函数,把需要准备的内容准备好、当前大函数的执行上下文因为小函数的引用关系就不能销毁了,形成了闭包。这样事先准备好的内容就能保存下来,当执行小函数时就会用到大函数里保存的信息。
这相当于大函数预先把信息存储起来,以后用的时候直接在小函数中调用即可。
实现bind函数
- 最外围是一个立即执行函数,在立即执行函数中完成使用自定义
bind
替换Function.prototype.bind
。直接上代码喽,讲解写在注释中。
// 如果让我们自己实现一个bind,该怎么写呢
~function anonymous(proto){
/**
** context
*/
function bind(context) {
// bind 中的 this =>(指向)需要最终执行的函数
//js中 null == undefined, 不传参也是undefined。所以null、undefined、null都可以用是否==undefined 判断
if (context == undefined) { // 给context一个默认值
context = window;
}
// 拿其余的参数: arguments 是类数组,我们借用数组的方法来处理
var args = [].slice.call(arguments, 1); // 第一个参数是context.相当于 Array.prototype.slice.call(