Jake Verbaten (2011-09-24T13:33:18.000Z)
There is no standardized way to create a new function with a prototype which
is not Function.prototype.

I propose Function.create

    /*
      Creates a new function whose prototype is proto.
      The function body is the same as the function fbody.
      The hash of propertydescriptors props is passed to defineproperties
just like
      Object.create does.
    */
    Function.create = (function() {
      var functionBody = function _getFunctionBody(f) {
        return f.toString().replace(/.+\{/, "").replace(/\}$/, "");
      };
      var letters = "abcdefghijklmnopqrstuvwxyz".split("");

      return function _create(proto, fbody, props) {
        var parameters = letters.slice(0, fbody.length);
        parameters.push(functionBody(fbody));
        var f = Function.apply(this, parameters);
        f.__proto__ = proto;
        Object.defineProperties(f, props);
        return f;
      };
    })();

This is the same as Object.create except the second parameter is a function.

It will create a new function whose function body is the same as the
function passed in.

I don't believe this is possible to do in ES5 without __proto__

jsfiddle showing an example. <http://jsfiddle.net/8CrqR/>

Related stackoverflow
question<http://stackoverflow.com/questions/7539148/how-do-i-inherit-functions>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20110924/80db4262/attachment-0001.html>
dignifiedquire at gmail.com (2014-06-17T15:05:11.492Z)
There is no standardized way to create a new function with a prototype which
is not Function.prototype.

I propose Function.create
```js
/*
 * Creates a new function whose prototype is proto.
 * The function body is the same as the function fbody.
 * The hash of propertydescriptors props is passed to defineproperties just like
 * Object.create does.
 */
Function.create = (function() {
  var functionBody = function _getFunctionBody(f) {
    return f.toString().replace(/.+\{/, "").replace(/\}$/, "");
  };
  var letters = "abcdefghijklmnopqrstuvwxyz".split("");

  return function _create(proto, fbody, props) {
    var parameters = letters.slice(0, fbody.length);
    parameters.push(functionBody(fbody));
    var f = Function.apply(this, parameters);
    f.__proto__ = proto;
    Object.defineProperties(f, props);
    return f;
  };
})();
```

This is the same as Object.create except the second parameter is a function.

It will create a new function whose function body is the same as the
function passed in.

I don't believe this is possible to do in ES5 without `__proto__`

jsfiddle showing an example. http://jsfiddle.net/8CrqR/

Related stackoverflow
question http://stackoverflow.com/questions/7539148/how-do-i-inherit-functions
dignifiedquire at gmail.com (2014-06-17T15:01:23.682Z)
There is no standardized way to create a new function with a prototype which
is not Function.prototype.

I propose Function.create

    /*
     * Creates a new function whose prototype is proto.
     * The function body is the same as the function fbody.
     * The hash of propertydescriptors props is passed to defineproperties just like
     * Object.create does.
     */
    Function.create = (function() {
      var functionBody = function _getFunctionBody(f) {
        return f.toString().replace(/.+\{/, "").replace(/\}$/, "");
      };
      var letters = "abcdefghijklmnopqrstuvwxyz".split("");

      return function _create(proto, fbody, props) {
        var parameters = letters.slice(0, fbody.length);
        parameters.push(functionBody(fbody));
        var f = Function.apply(this, parameters);
        f.__proto__ = proto;
        Object.defineProperties(f, props);
        return f;
      };
    })();

This is the same as Object.create except the second parameter is a function.

It will create a new function whose function body is the same as the
function passed in.

I don't believe this is possible to do in ES5 without `__proto__`

jsfiddle showing an example. http://jsfiddle.net/8CrqR/

Related stackoverflow
question http://stackoverflow.com/questions/7539148/how-do-i-inherit-functions