On Mon, Oct 17, 2011 at 10:28 AM, kmalakoff <[email protected]> wrote:
> Hi everyone, > > OK. One more point of feedback! > > I have implemented the API so you need to call Mixin.in(this, NAME) on > every instance (In Coffeescript, I typically do constructor: -> super; > Mixin.in(this, "")). > > As Jake pointed out, it is a little strange since after the first > mixin, the functions and properties will already be in the class. That > said, Mixin.in and Mixin.out also call the initialize and destroy > functions on each instance so it seems like a natural requirement. > > I really couldn't think of an automated way to do this since the most > common case is to mixin in the constructor and mixout in the > destructor (if needed). > > Is there a better way to do this for the most common case? eg. > automating the initialization and destruction of instances rather than > explicit calls. I would like to retain manual control, but maybe there > is a case for and a way to implement this automation. I'm partly > thinking about class-level mixins although like Jake pointed out, > there's existing and simpler ways to do class-level mixins. > I will point out that if your mixing in an aspect in a class you may be using the wrong tool, an aspect is functionality that belongs to an object not to a class of objects. I would personally be tempted to say you need to different constructs, a mixin (class-level) and an aspect (object-level). As for the automated way of dealing with mixing in and constructors/destructors. I basically combine the constructors<https://github.com/Raynos/pd/blob/master/src/pd.js#L50>you could do the same for destructors, thus a class level mixin would copy properties and methods into a class, then overwrite the constructor and destructor of the class with a function combination. To automate this you would have to enforce defaults like `proto.constructor` and `proto.destructor` > > Cheers, > > Kevin > > On Oct 10, 8:56 am, kmalakoff <[email protected]> wrote: > > Hi everyone, > > > > In a personal project, I started using Javascript mixins quite heavily > > and recently refactored out the code into a library: > https://github.com/kmalakoff/mixin > > > > I've been using and improving this over the last 3 months and I'm > > really excited about sharing it with the JS community, but I'm not > > sure what people think especially since playing around with prototypes > > can be frowned upon. > > > > The only feedback I have received so far is that is might be hard to > > debug and seemed a bit complex. For debugging, I implemented a > > statistics module to be able to look at memory usage and would argue > > that the complexity matches the problem, but I'd like to get some more > > feedback! (thank you Angus for suggesting jsmentors) > > > > Here are three blog posts with examples so you know what I'm trying to > > achieve: > > > > 1)http://braincode.tumblr.com/post/11026285083/mixin-js-the-javascript-. > .. > > 2)http://braincode.tumblr.com/post/11100271168/mixin-js-view-with-model. > .. > > 3)http://braincode.tumblr.com/post/11265571365/mixin-js-subscriptions-e. > .. > > > > The above GitHub repository has tests both for the library and for the > > initial 7 mixins I released (RefCount, Flags, AutoMemory, > > Subscriptions, Timeouts and 2 or Backbone.js) and the working examples > > from the blog posts can be found here: > https://github.com/kmalakoff/examples-kmalakoff > > > > Any feedback would be much appreciated. > > > > Cheers, > > > > Kevin > > -- > To view archived discussions from the original JSMentors Mailman list: > http://www.mail-archive.com/[email protected]/ > > To search via a non-Google archive, visit here: > http://www.mail-archive.com/[email protected]/ > > To unsubscribe from this group, send email to > [email protected] > -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/[email protected]/ To search via a non-Google archive, visit here: http://www.mail-archive.com/[email protected]/ To unsubscribe from this group, send email to [email protected]
