'use strict';/* eslint no-invalid-this: 1 */var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';var toStr = Object.prototype.toString;var max = Math.max;var funcType = '[object Function]';var concatty = function concatty(a, b) {var arr = [];for (var i = 0; i < a.length; i += 1) {arr[i] = a[i];}for (var j = 0; j < b.length; j += 1) {arr[j + a.length] = b[j];}return arr;};var slicy = function slicy(arrLike, offset) {var arr = [];for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {arr[j] = arrLike[i];}return arr;};var joiny = function (arr, joiner) {var str = '';for (var i = 0; i < arr.length; i += 1) {str += arr[i];if (i + 1 < arr.length) {str += joiner;}}return str;};module.exports = function bind(that) {var target = this;if (typeof target !== 'function' || toStr.apply(target) !== funcType) {throw new TypeError(ERROR_MESSAGE + target);}var args = slicy(arguments, 1);var bound;var binder = function () {if (this instanceof bound) {var result = target.apply(this,concatty(args, arguments));if (Object(result) === result) {return result;}return this;}return target.apply(that,concatty(args, arguments));};var boundLength = max(0, target.length - args.length);var boundArgs = [];for (var i = 0; i < boundLength; i++) {boundArgs[i] = '$' + i;}bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);if (target.prototype) {var Empty = function Empty() {};Empty.prototype = target.prototype;bound.prototype = new Empty();Empty.prototype = null;}return bound;};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。