自定义bind和call及apply重要的是this和参数
```bash js
// 设置公共this方法
let pubContext = funtion(){return this}
Function.prototype._bind = function (context,…args){
// 设置默认this
context = arguments[0] || pubContext
// 设置函数指向构造
context.func = this
return function(…args2){
let result = args.length !=0 ? context.func(…args) : context.func(…args2)
delete context.func
return result;
}
}
Function.prototype._call = function (context,…args){
// 设置默认this
context = arguments[0] || pubContext
if(context instanceof String){
context = new String(context)
}
// 设置函数指向构造
context.func = this
const result = context.func( …args )
delete context.func
return result
}
Function.prototype._apply = function (context,args){
// 设置默认this
context = arguments[0] || pubContext
if(context instanceof String){
context = new String(context)
}
// 设置函数指向构造
context.func = this
let result;
if(args){
result = context.func( ...args )
}else{
result = context.func()
}
delete context.func
return result
}