SOURCE

// 函数原型上添加 myCall方法 来模拟call
Function.prototype.myCall = function(obj){
    //我们要让传入的obj成为, 函数调用时的this值.
    obj._fn_ = this;  //在obj上添加_fn_属性,值是this(要调用此方法的那个函数对象)。
    obj._fn_();       //在obj上调用函数,那函数的this值就是obj.
    delete obj._fn_; // 再删除obj的_fn_属性,去除影响.
    //_fn_ 只是个属性名 你可以随意起名,但是要注意可能会覆盖obj上本来就有的属性
}

let o = {
  name : 'o',
  fn:function() {
    console.log(this.name);
  }
}

let test = {
  name : 'test'
}


console.log(o.fn());
console.log(o.fn.call(test));
console.log(o.fn.myCall(test));
console 命令行工具 X clear

                    
>
console