You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
"use strict"; |
|
|
|
var test = function (arg1, arg2) { return arg2; }; |
|
|
|
try { |
|
Object.defineProperty(test, "length", { |
|
configurable: true, |
|
writable: false, |
|
enumerable: false, |
|
value: 1 |
|
}); |
|
} |
|
catch (ignore) {} |
|
|
|
if (test.length === 1) { |
|
// ES2015+ |
|
var desc = { configurable: true, writable: false, enumerable: false }; |
|
module.exports = function (length, fn) { |
|
if (fn.length === length) return fn; |
|
desc.value = length; |
|
return Object.defineProperty(fn, "length", desc); |
|
}; |
|
return; |
|
} |
|
|
|
module.exports = function (length, fn) { |
|
if (fn.length === length) return fn; |
|
switch (length) { |
|
case 0: |
|
return function () { return fn.apply(this, arguments); }; |
|
case 1: |
|
return function (ignored1) { return fn.apply(this, arguments); }; |
|
case 2: |
|
return function (ignored1, ignored2) { return fn.apply(this, arguments); }; |
|
case 3: |
|
return function (ignored1, ignored2, ignored3) { return fn.apply(this, arguments); }; |
|
case 4: |
|
return function (ignored1, ignored2, ignored3, ignored4) { |
|
return fn.apply(this, arguments); |
|
}; |
|
case 5: |
|
return function (ignored1, ignored2, ignored3, ignored4, ignored5) { |
|
return fn.apply(this, arguments); |
|
}; |
|
case 6: |
|
return function (ignored1, ignored2, ignored3, ignored4, ignored5, ignored6) { |
|
return fn.apply(this, arguments); |
|
}; |
|
case 7: |
|
return function (ignored1, ignored2, ignored3, ignored4, ignored5, ignored6, ignored7) { |
|
return fn.apply(this, arguments); |
|
}; |
|
default: |
|
throw new Error("Usupported function length"); |
|
} |
|
};
|
|
|