2008/4/28 kangax <[EMAIL PROTECTED]>: > > Richard, > returning alien object from the constructor could actually be quite > confusing: > > var Person = Class.create({ > initialize: function(name) { > this.name = name; > return { foo: 'bar' }; > }, > speak: function(msg) { > return [this.name, msg].join(': '); > } > }) > > var john = new Person('John'); > > // broken prototype chain > john instanceof Person; // false > john.constructor == Person; // false > > // missing instance properties/methods > john.name; // undefined > john.speak; // undefined > > // returned object has nothing to do with the Person class > john.foo; // 'bar' > > As far as factory pattern, I don't think it's a good idea for a class > X to return class Y. Wouldn't it make more sense to have an instance > of class "Factory" that could return either X or Y? >
Aha! Of course. And that's why it is a Factory Method. Doh. Good point. Well made. Thank you. Richard. > On Apr 28, 5:15 am, "Richard Quadling" <[EMAIL PROTECTED]> > wrote: > > 2008/4/28 Rails Trac <[EMAIL PROTECTED]>: > > > > > > > > > > > #11481: [PATCH] [TEST] Constructor wrapper should return value > > > > ---------------------------------------------------+------------------------ > > > Reporter: cch1 | Owner: sam > > > Type: defect | Status: > closed > > > > > Priority: normal | Milestone: 2.x > > > Component: Prototype | Version: edge > > > Severity: normal | Resolution: > wontfix > > > > > Keywords: TRIVIAL constructor initialize return | > > > > ---------------------------------------------------+------------------------ > > > Changes (by jdalton): > > > > > * status: new => closed > > > * resolution: => wontfix > > > > > Comment: > > > > > After some discussions I don't believe this will ever make it into the > > > core. > > > > > -- > > > Ticket URL: <http://dev.rubyonrails.org/ticket/11481#comment:9> > > > > In general, having class X being able to return class Y can be very > > useful (implementing a factory for example). > > > > I'm not saying that this SHOULD go in, but what are the primary > > reasons for NOT putting it in? > > > > Thanks. > > > > Richard Quadling. > > > > -- > > ----- > > Richard Quadling > > Zend Certified Engineer :http://zend.com/zce.php?c=ZEND002498&r=213474731 > > "Standing on the shoulders of some very clever giants!" > > > -- ----- Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 "Standing on the shoulders of some very clever giants!" --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---