SOURCE

//call
Function.prototype.myCall=function(context){
  var context=context||window;
  context.fn=this;//把调用的方法传给定义的context.fn属性
  var args=[...arguments].slice(1)
  let result=context.fn(...args);
  delete context.fn;
  return result;
}

//apply
FUnction.prototype.myApply=function(context){
  var context=context||window;
  context.fn=this;//把调用的方法传给定义的context.fn属性
  var result
  if(arguments[1]){
    result=context.fn(...arguments[1])
  }else{
    result=context.fn()
  }
  delete context.fn;
  return result;
}

//bind
FUnction.prototype.myApply=function(context){
var self=this;
  var agrs=[...arguments].slice(1)
  return function(){
    return self.apply(context,agrs.concat(...arguments))
  }
}
console 命令行工具 X clear

                    
>
console