There is no standardized way to create a new function with a prototype which is not Function.prototype.<div><br></div><div>I propose Function.create</div><div><br></div><div><div>    /*</div><div>      Creates a new function whose prototype is proto.</div>
<div>      The function body is the same as the function fbody.</div><div>      The hash of propertydescriptors props is passed to defineproperties just like</div><div>      Object.create does.</div><div>    */</div><div>
    Function.create = (function() {</div><div>      var functionBody = function _getFunctionBody(f) {</div><div>        return f.toString().replace(/.+\{/, "").replace(/\}$/, "");</div><div>      };</div>
<div>      var letters = "abcdefghijklmnopqrstuvwxyz".split("");</div><div>    </div><div>      return function _create(proto, fbody, props) {</div><div>        var parameters = letters.slice(0, fbody.length);</div>
<div>        parameters.push(functionBody(fbody));</div><div>        var f = Function.apply(this, parameters);</div><div>        f.__proto__ = proto;</div><div>        Object.defineProperties(f, props);</div><div>        return f;</div>
<div>      };</div><div>    })();</div></div><div><br></div><div>This is the same as Object.create except the second parameter is a function.</div><div><br></div><div>It will create a new function whose function body is the same as the function passed in.</div>
<div><br></div><div>I don't believe this is possible to do in ES5 without __proto__</div><div><br></div><div><a href="http://jsfiddle.net/8CrqR/">jsfiddle showing an example.</a><br></div><div><br></div><div><a href="http://stackoverflow.com/questions/7539148/how-do-i-inherit-functions">Related stackoverflow question</a><br>
</div>