跳到主要内容

实现一个bind?

实现一个简化版的 bind

// 简化版的 bind
Function.prototype.myBind = function (context) {
var self = this;
var args = Array.prototype.slice.call(arguments, 1);

return function () {
var bindArgs = Array.prototype.slice.call(arguments);
return self.apply(context, args.concat(bindArgs));
};
};

var obj = { name: "John" };

function sayHello(greeting) {
console.log(greeting + ", " + this.name);
}

var sayHelloToJohn = sayHello.myBind(obj, "Hola");
sayHelloToJohn(); // 输出: Hola, John

这个简化版的 bind 主要做了以下事情:

  • 缓存了原始函数(this 的值)。
  • 返回一个新函数,该函数在调用时会将原始函数绑定到指定的上下文,并传递预置的参数。

考察点