Function.prototype.bind = function (thisArg, ...args) {
let self = this
let Bound = function (...args2) {
self.apply(thisArg, [...args, ...args2])
}
Bound.prototype = Object.create(self.prototype)
Bound.prototype.constructor = self
return Bound
}