SOURCE

Function.prototype.myBind = function(content) {
    // 是否为函数_若不考虑参数类型可以省略
    if (typeof this !== 'function') {
        throw Error("not a function.")
    }
    // 获取参数
    let fn = this;
    let args = [...arguments].slice(1);

    // 创建一个新的函数
    let resFn = function () {
        // 判断是否继承于该函数
        return fn.apply(this instanceof resFn ? this : content, [...args, ...arguments])
    }
    // 返回一个新的函数
    return resFn;
}

var module = {
  x: 42,
  getX: function() {
    return this.x;
  }
}

var unboundGetX = module.getX;
console.log(unboundGetX()); // The function gets invoked at the global scope
// expected output: undefined

var boundGetX = unboundGetX.myBind(module);
console.log(boundGetX());
console 命令行工具 X clear

                    
>
console