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?

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!"
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to