On Mon, Oct 17, 2011 at 10:13 AM, kmalakoff <xmann.i...@gmail.com> wrote:

> Hi everyone,
>
> Out of the discussion with Jake, also there was a clarification on why
> I used names instead of constructors directly to identify a mixin (see
> below), and why I put initialize and destroy outside the object.
>

The fact you used a name is one way to do it, the other way to do it is
dependency injection

var createAspect = function (requiredAspect1, requiredAspect2) {
  // return and make aspect
}

>
> I needed a general-purpose way for mixins (which may be dependent on
> other mixins) to find one another irregardless of the developers
> directly structure when they use or don't use CommonJS. The name was a
> way to puncture through the require paths. Also, I put the initilize
> outside the object to avoid clobbering, to give a clear reference to
> the initalize and destroy functions which may be called multiple
> times, and also to avoid polluting the mix target with those extra
> methods which are in a sense private to the mixin system rather than
> part of the public interface.
>
> Is there a better way to do this?
>
> Kevin
>
>
> *****
> > Why would you want to register a mixin by string name? A mixin should
> just
> > be an object.
>
> KM> Originally I was using objects. The problem I ran into was that I
> was using CommonJS that required a path to the object so when I
> packaged the library and sample mixins I needed to 1) find a way to
> provide users the flexibility to pick and choose which mixins they use
> and 2) to not force a specific directory and file structure for them
> but let them choose how they lay things out. The answer I came up with
> was "named loose coupling" but if there is a better solution, I'm
> happy to apply it - just let me know.
>
> KM> Use case: one user doesn't use CommonJS and all of their mixins
> are in the global namespace; another users uses CommonJS and layouts
> out their mixin files in "vendor", and a different user puts other
> people's mixins under "vendor/mixin" and their own mixins in a lib
> folder: "lib/my_mixins"
> ******
>
> > *Mixin.initialize*
>
> > The object you "register" has properties like it's name (why should it
> have
> > a name, just use the object reference)
> > It also has an initialize method, why can't that live on the object (my
> > personal preference is using `.constructor`)
>
> 2) I decoupled the initialize method and put it outside the object was
> to avoid clobbering between mixins and to not have a fixed new/destroy
> call order, but something on-the-fly and dynamic.
>
> --
> To view archived discussions from the original JSMentors Mailman list:
> http://www.mail-archive.com/jsmentors@jsmentors.com/
>
> To search via a non-Google archive, visit here:
> http://www.mail-archive.com/jsmentors@googlegroups.com/
>
> To unsubscribe from this group, send email to
> jsmentors+unsubscr...@googlegroups.com
>

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/jsmentors@jsmentors.com/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/jsmentors@googlegroups.com/

To unsubscribe from this group, send email to
jsmentors+unsubscr...@googlegroups.com

Reply via email to