code: function(name, params, body, context) {
  		var F = context ? context.Function : Function;
  		name = this.safename(name);
  		params = params ? params.join(",") : "";
  		body = body || "";
  		return new F(
  			"return function " + name + " ( " + params + " ) {" + body + "}"
  		)();
  	}
docs: Create named function. This may not be the most optimized thing to compile.
  @see https://mail.mozilla.org/pipermail/es-discuss/2009-March/008954.html
  @see http://wiki.ecmascript.org/doku.php?id=strawman:name_property_of_functions
  @param @optional {String} name
  @param @optional {Array<String>} params
  @param @optional {String} body
  @param @optional {Window} context
  @returns {function}