For the record, function proxies could be used to implement a work-around. There's a strawman to extend function proxies with support for custom prototypes: < http://wiki.ecmascript.org/doku.php?id=strawman:function_proxy_prototype>. I'm not proposing this as a mechanism for function subclassing, simply as a potential work-around until we have something better (such as the <| operator).
In any case, this work-around would work only if the function's prototype does eventually inherit from |Function.prototype|. Cheers, Tom 2011/9/24 Jake Verbaten <[email protected]> > 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> > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

