<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dev.enekoalonso.com &#187; inheritance</title>
	<atom:link href="http://dev.enekoalonso.com/tag/inheritance/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.enekoalonso.com</link>
	<description>having fun with code</description>
	<lastBuildDate>Wed, 12 Oct 2011 21:40:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Finally: Singletons, the Mootools way</title>
		<link>http://dev.enekoalonso.com/2010/01/18/finally-singletons-the-mootools-way/</link>
		<comments>http://dev.enekoalonso.com/2010/01/18/finally-singletons-the-mootools-way/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 17:26:38 +0000</pubDate>
		<dc:creator>Eneko Alonso</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[instance]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://dev.enekoalonso.com/?p=404</guid>
		<description><![CDATA[I have been using for a while the &#8220;new new Class&#8221; syntax to create singletons on the projects I am working on. This is for many reasons, but specially because I didn&#8217;t like other solutions like Class.Mutators, Class.Oclude or extending a plain object with $extend(). Now, after discussing a little bit on the Mootools email [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using for a while the &#8220;new new Class&#8221; syntax to create singletons on the projects I am working on. This is for many reasons, but specially because I didn&#8217;t like other solutions like <a href="http://www.nwhite.net/?p=169">Class.Mutators</a>, <a href="http://www.clientcide.com/best-practices/using-classocclude-to-create-singletons/">Class.Oclude</a> or <a href="http://keetology.com/blog/2009/07/23/up-the-moo-herd-iii-its-classy-not-classic#singleton">extending a plain object with $extend()</a>.</p>
<p>Now, after discussing a little bit on the Mootools email list about what was the best way to create singletons, I have created <a href="http://github.com/eneko/Class.Singleton">Class.Singleton</a> so we can create singletons the Mootools way. Here is how it works:</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> MySingleton = <span class="kw2">new</span> <span class="kw2">Class</span>.<span class="me1">Singleton</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; initialize: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// code here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; method1: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// code here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; method2: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// code here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<h3>Using inheritance, mixins, etc</h3>
<p>Class.Singleton works like defining any other Mootools class using Class(), so we can have inheritance, mixins, etc.</p>
<div class="geshi no javascript">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> BaseClass = <span class="kw2">new</span> <span class="kw2">Class</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; initialize: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Initialization code here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; console.<span class="me1">log</span><span class="br0">&#40;</span><span class="st0">&#39;BaseClass initialized.&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; method1: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// some code</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> MySingleton = <span class="kw2">new</span> <span class="kw2">Class</span>.<span class="me1">Singleton</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">Extends</span>: BaseClass,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; initialize: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">parent</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; console.<span class="me1">log</span><span class="br0">&#40;</span><span class="st0">&#39;MySingleton singleton initialized.&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; method1: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">parent</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// more code</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Hope you like it!</p>
<p>Repository url: <a href="http://github.com/eneko/Class.Singleton">http://github.com/eneko/Class.Singleton</a></p>
<h3  class="related_post_title">Related Posts:</h3><ul class="related_post"><li>April 23, 2009 -- <a href="http://dev.enekoalonso.com/2009/04/23/sending-messages-between-javascript-objects/" title="Sending messages between Javascript objects">Sending messages between Javascript objects</a> (2)</li><li>April 7, 2009 -- <a href="http://dev.enekoalonso.com/2009/04/07/setting-up-timers-and-intervals-inside-js-objects/" title="Setting up timers and intervals inside JS objects">Setting up timers and intervals inside JS objects</a> (2)</li><li>July 20, 2009 -- <a href="http://dev.enekoalonso.com/2009/07/20/setters-getters-on-mootools-classes/" title="Setters &#038; Getters on Mootools classes">Setters &#038; Getters on Mootools classes</a> (2)</li><li>December 14, 2008 -- <a href="http://dev.enekoalonso.com/2008/12/14/threads-in-javascript/" title="Threads in Javascript">Threads in Javascript</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://dev.enekoalonso.com/2010/01/18/finally-singletons-the-mootools-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

