function fun1(a, b,c) { console.log("*this: ", this) console.log(a, b,c) return 'this is fun1' } Function.prototype.bind1 = (thisArg, ...argsArry) =>{ const self = this return function () { return self.apply(thisArg, argsArry) } } const fun2 = fun1.bind1({x: 100}, 2, 6, 4) const ret = fun2() console.log(ret)