23 lines
		
	
	
		
			541 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			541 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"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;
 | 
						|
};
 |