Function.prototype.bind2 = function() { const args = Array.from(arguments) const context = args.shift() // context 在这个例子中指向 { x: 100 } const self = this // self 在这个例子中指向 fn1 return function() { const argsAll = args.concat(Array.from(arguments)) return self.apply(context, argsAll) }}function fn1(a, b, c) { console.log('this', this) console.log(a, b, c) return 'this is fn1'}const fn2 = fn1.bind2({ x: 100 }, 1)const res = fn2(2, 3)console.log(res)