copy.js 518 B

1234567891011121314151617181920212223
  1. "use strict";
  2. var mixin = require("../../object/mixin")
  3. , validFunction = require("../valid-function");
  4. module.exports = function () {
  5. validFunction(this);
  6. var args = [];
  7. for (var i = 0; i < this.length; ++i) args.push("arg" + (i + 1));
  8. // eslint-disable-next-line no-new-func
  9. var fn = new Function(
  10. "fn",
  11. "return function " +
  12. (this.name || "") +
  13. "(" +
  14. args.join(", ") +
  15. ") { return fn.apply(this, arguments); };"
  16. )(this);
  17. try { mixin(fn, this); }
  18. catch (ignore) {}
  19. return fn;
  20. };