手写call apply bind方法
时间: 2023-04-29 13:04:47 浏览: 150
手写call方法:
```
Function.prototype.myCall = function(context) {
context = context || window;
context.fn = this;
var args = [...arguments].slice(1);
var result = context.fn(...args);
delete context.fn;
return result;
}
```
手写apply方法:
```
Function.prototype.myApply = function(context, arr) {
context = context || window;
context.fn = this;
var result;
if (!arr) {
result = context.fn();
} else {
result = context.fn(...arr);
}
delete context.fn;
return result;
}
```
手写bind方法:
```
Function.prototype.myBind = function(context) {
var self = this;
var args = [...arguments].slice(1);
return function() {
var bindArgs = [...arguments];
return self.apply(context, args.concat(bindArgs));
}
}
```
这些代码中的"context"是指调用这个方法时传入的对象, "args" 是传入的参数, 它们都是可选的.
阅读全文