实现一个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的值)。 - 返回一个新函数,该函数在调用时会将原始函数绑定到指定的上下文,并传递预置的参数。
考察点
无