if (!Function.prototype.bind) { Function.prototype.bind = function () { var self = this, // 保存原函数 context = [].shift.call(arguments), // 保存需要绑定的this上下文 args = [].slice.call(arguments); // 剩余的参数转为数组 return function () { // 返回一个新函数 self.apply(context,[].concat.call(args, [].slice.call(arguments))); } } }
https://www.cnblogs.com/liubingyjui/p/10799019.html
// 实现一个函数柯里化的原生bind方法 Function.prototype._bind = function (context) { let self = this; let firstArg = Array.prototype.slice.call(arguments,1); return function () { let secArg = Array.prototype.slice.call(arguments); let finishArg = firstArg.concat(secArg); return self.apply(context,finishArg); } }