heyujie
2021-05-20 6ebdefb4a5b2be82a8c452c0bb4624f3d85a17b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"use strict";
 
var mixin         = require("../../object/mixin")
  , validFunction = require("../valid-function")
  , re            = /^\s*function\s*([\0-')-\uffff]+)*\s*\(([\0-(*-\uffff]*)\)\s*\{/;
 
module.exports = function () {
    var match = String(validFunction(this)).match(re), fn;
 
    // eslint-disable-next-line no-new-func
    fn = new Function(
        "fn",
        "return function " +
            match[1].trim() +
            "(" +
            match[2] +
            ") { return fn.apply(this, arguments); };"
    )(this);
    try { mixin(fn, this); }
    catch (ignore) {}
    return fn;
};