<?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>Zebra Kick &#187; JavaScript</title>
	<atom:link href="http://www.zebrakick.com/blog/category/programming/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zebrakick.com/blog</link>
	<description>Creative Awesome Web</description>
	<lastBuildDate>Wed, 18 Aug 2010 19:29:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Top Bar Hive Supply Website &#8211; In House Marketing Success</title>
		<link>http://www.zebrakick.com/blog/top-bar-hives/</link>
		<comments>http://www.zebrakick.com/blog/top-bar-hives/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 19:24:53 +0000</pubDate>
		<dc:creator>Guest Author</dc:creator>
				<category><![CDATA[In House SEO]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.zebrakick.com/blog/?p=248</guid>
		<description><![CDATA[This post was written by Matt Reed, a good friend of Zebra Kick.  It was great to hear that his website is dong well so I asked him to write a bit about the progress of his top bar hive website.  You can read more of his posts at his Bee Keeping Blog.

Our business grew [...]<p><div class="aggregator-exclude"><a href="http://www.zebrakick.com/blog/top-bar-hives/">Top Bar Hive Supply Website &#8211; In House Marketing Success</a> posted on the <a href="http://www.zebrakick.com/blog">Zebra Kick Blog</a> a <a href="http://www.zebrakick.com">Riverside Web Design Company</a></div></p>
]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">This post was written by Matt Reed, a good friend of Zebra Kick.  It was great to hear that his website is dong well so I asked him to write a bit about the progress of his <a title="top bar hives" href="http://www.beethinking.com" target="_self">top bar hive</a> website.  You can read more of his posts at his <a href="http://www.beethinking.com/blog">Bee Keeping Blog</a>.</p>
<hr /><img class="alignleft size-full wp-image-257" title="Screen shot 2010-08-18 at 12.22.37 PM" src="http://www.zebrakick.com/blog/wp-content/uploads/2010/08/Screen-shot-2010-08-18-at-12.22.37-PM.png" alt="Screen shot 2010-08-18 at 12.22.37 PM" width="322" height="111" /></p>
<p>Our business grew from a hobby in our garage, shipping a few top bar hives per month in December 2009, to a full-fledged, alternative beekeeping supplier in March 2010, shipping more than 4 dozen hives monthly, almost entirely due to Search Engine Optimization and Google Ads. Alternative beekeeping &#8212; <a href="http://www.beethinking.com/topbarhives">top bar beekeeping</a> in particular &#8212; is a niche market, with many options for a simple, cost-effective search marketing campaign. Making use of a technical background, a minimal ability to perform SEO on our Joomla-driven website, and some glaring failures by the competition in our SEO market, we were able to quadruple sales with an investment of less than $150 per month.</p>
<p>We started with a Google Ad budget of $50 per month in conjunction with Google Analytics, monitoring the results and adjusting the ads accordingly. During that time we also began researching SEO and tweaking our website to improve our SERP for our most important search terms. We chose very specific search terms in order to improve our conversion rate and reduce wasted ad clicks. At the same time, we also began making helpful posts on relevant blogs and forums, as well as working with related sites to swap links. The results came quickly, as we saw our Pagerank rise from 1 to 4 in a matter of only a few months. By March we were seeing over 6,000 unique visitors per month.</p>
<p>Today the competition is increasing, but our early and continued foray into SEO continues to give us the edge over competitors. While we&#8217;ve been busy the past few months, we cannot stress enough the importance of fresh content through blog posts, and outreach through Facebook, Twitter and other marketing avenues. We monitor daily our most important search terms through Google Alerts, and work diligently to stay current with trends in our industry and the campaigns of our competition. As traffic, sales and our ad budget increase proportionately, we continue to monitor our Google Ads, SERP, and content to ensure there are no issues.</p>
<p>At the same time that we are running an online campaign, we are beginning to focus more on local advertising through numerous avenues, and it is paying off. A combination of word-of-mouth, donations to sustainability-focused non-profits and locally targeted Google Ads have shown an overwhelming increase in local interest. It has been an interesting and amazing jump from a small online store to a viable business that is beginning to ponder the idea of a brick and mortar storefront.</p>
<p>Thanks to a little elbow grease, a monthly-coffee-budget-worth of Google Ads and some Search Engine Optimization, we believe Bee Thinking will grow to be a significant portion of our family&#8217;s income, if not our sole income in the next couple years!</p>
<p>Matt Reed<br />
Bee Thinking</p>
<p><div class="aggregator-exclude"><a href="http://www.zebrakick.com/blog/top-bar-hives/">Top Bar Hive Supply Website &#8211; In House Marketing Success</a> posted on the <a href="http://www.zebrakick.com/blog">Zebra Kick Blog</a> a <a href="http://www.zebrakick.com">Riverside Web Design Company</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zebrakick.com/blog/top-bar-hives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Literals vs. Constructed Objects in JavaScript</title>
		<link>http://www.zebrakick.com/blog/object-literals-vs-constructed-objects-in-javascript/</link>
		<comments>http://www.zebrakick.com/blog/object-literals-vs-constructed-objects-in-javascript/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 05:36:47 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[constructed object]]></category>
		<category><![CDATA[context locking]]></category>
		<category><![CDATA[dojo.clone]]></category>
		<category><![CDATA[dojo.hitch]]></category>
		<category><![CDATA[instantiated object]]></category>
		<category><![CDATA[object literal]]></category>
		<category><![CDATA[Prototype bind]]></category>
		<category><![CDATA[protypal inheritance]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[static object]]></category>

		<guid isPermaLink="false">http://www.zebrakick.com/blog/?p=171</guid>
		<description><![CDATA[Another discussion born from a question at stackoverflow.  Today I&#8217;m laying out the differences between object literals and constructed objects, when to use which, how to get the most out of them, and a few other tricks along the way.  Let&#8217;s get started.
Object Literals / Static Objects
Object literals, or static objects, don&#8217;t require instantiation with [...]<p><div class="aggregator-exclude"><a href="http://www.zebrakick.com/blog/object-literals-vs-constructed-objects-in-javascript/">Object Literals vs. Constructed Objects in JavaScript</a> posted on the <a href="http://www.zebrakick.com/blog">Zebra Kick Blog</a> a <a href="http://www.zebrakick.com">Riverside Web Design Company</a></div></p>
]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Another discussion born from a question at <a href="http://stackoverflow.com/questions/1704618/">stackoverflow</a>.  Today I&#8217;m laying out the differences between object literals and constructed objects, when to use which, how to get the most out of them, and a few other tricks along the way.  Let&#8217;s get started.<span id="more-171"></span></p>
<h2>Object Literals / Static Objects</h2>
<p>Object literals, or static objects, don&#8217;t require instantiation with the <tt>new</tt> operator and also behave like singletons.  They are often used for providing utility classes since methods can be called statically, or as parameter packages to provide named arguments or lists to other functions.  Consider the following example that illustrates this singleton property of object literals:</p>
<p><strong>Example 1: Static object singleton behavior</strong></p>
<pre>var staticObject1 = {
    a: 123,
    b: 456
};

var staticObject2 = staticObject1;
staticObject2.b = "hats";
console.log(staticObject1, staticObject2);</pre>
<p><strong>Output:</strong></p>
<pre>Object a=123 b=456  Object a=123 b=456
Object a=123 b=hats Object a=123 b=hats</pre>
<p>Notice that changing <tt>staticObject1.b</tt> also affected <tt>staticObject2.b</tt>.  This happens because in JavaScript, when you assign an object to another variable, it simply creates a reference.</p>
<p>The singleton behavior may not always be the desired effect.  Many libraries, such as Dojo, offer an <a href="http://api.dojotoolkit.org/jsdoc/1.3.2/dojo.clone">object cloning</a> method that can avoid this behavior if just you want to make a copy of a static object.  Continuing the previous example, consider the following:</p>
<p><strong>Example 2: Circumventing the singleton behavior</strong></p>
<pre>var staticObject3 = dojo.clone(staticObject1); // See the documentation in the link above
staticObject1.a = "pants";
console.log(staticObject1, staticObject2, staticObject3);</pre>
<p><strong>Output:</strong></p>
<pre>Object a=pants b=hats Object a=pants b=hats Object a=123 b=hats</pre>
<p>Notice that the values of the members of <tt>staticObject1</tt> and <tt>staticObject2</tt> are the same, whereas <tt>staticObject3</tt> is not affected by changes to these other objects.</p>
<p>Static objects are also useful for creating project or library namespaces, rather than filling up the global scope, and promote compatibility like no one&#8217;s business. This is useful when creating libraries that require portability or interoperability.  This can be seen in popular libraries such as Dojo, YUI, ExtJs, and others where all or most methods are called within that library&#8217;s specific context (e.g.: <tt>dojo.examplMethod()</tt>, <tt>YUI().exampleMethod()</tt>, and <tt>Ext.exampleMethod()</tt> respectively).</p>
<p>One thing to remember is that in object literals, all members and methods are  necessarily public. Forever and always, so help me Douglas Crockford.  However, this is not the case for constructed objects, as you&#8217;ll see shortly.  Access restrictions notwithstanding, static objects can also be considered loosely analogous in purpose and use to <tt>C/C++'s struct</tt> type.</p>
<h2>Constructed Objects / Instantiated Objects</h2>
<p>Classes in JavaScript are based on prototypal inheritance, which can be a lengthy subject in itself and can be read about <a href="http://javascript.crockford.com/prototypal.html">here</a>, <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Inheritance">here</a>, and <a href="http://www.webreference.com/programming/javascript/prototypal_inheritance/">here</a>.  For now, we will just compare the differences between instantiated and static objects and leave inheritance for another day.</p>
<p>As opposed to static objects, this method of object creation gives the unique opportunity for private scope object members and methods thanks to JavaScript&#8217;s closure property.  Consider the following example of private class members:</p>
<p><strong>Example 3: Private class members</strong></p>
<pre>var SomeObject = function() {
    var privateMember = "I am a private member";
    this.publicMember = "I am a public member";

    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
};</pre>
<p>var o = new SomeObject();<br />
console.log(typeof o.privateMember, typeof o.publicMember);<br />
o.publicMethod();</p>
<p><strong>Output:</strong></p>
<pre>undefined string
I am a private member I am a public member</pre>
<p>Notice that <tt>typeof o.privateMember</tt> is &#8220;undefined&#8221; and not accessible outside of the object, but is from within.</p>
<p>Private methods can also be defined.  They are not as straight forward but are still simple to implement.  The issue lies in that the value of <tt>this</tt> within a private method will refer to <tt>window</tt> if you try to execute it as if it were just any method.  There are at least three techniques that can be applied to ensure that <tt>this</tt> refers to the object that we are working within, in this case, the instance of <tt>SomeObject</tt>.  Consider the following example:</p>
<p><strong>Example 4: Private class methods with <tt>call</tt></strong></p>
<pre>var SomeObject = function() {
    var privateMember = "I am a private member";
    var privateMethod = function() {
        console.log(privateMember, this.publicMember);
    };

    this.publicMember = "I am a public member";
    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
    this.privateMethodWrapper = function() {
        privateMethod.call(this);
    }
};

var o = new SomeObject();
console.log(typeof o.privateMethod, typeof o.publicMethod, typeof o.privateMethodWrapper);
o.privateMethodWrapper();</pre>
<p><strong>Output:</strong></p>
<pre>undefined function function
I am a private member I am a public member</pre>
<p>Notice that within <tt>privateMethodWrapper()</tt>, <tt>privatemethod</tt> was executed using <tt>call</tt> and passing in <tt>this</tt> for the function&#8217;s context.  This is all fine and allows us to use <tt>this</tt> within the private method as we normally would; however, the following technique is slightly more preferable as it simplifies the calling context.  The previous example can be rearranged to the following:</p>
<p><strong>Example 5: Private class methods with closure reference to <tt>this</tt></strong></p>
<pre>var SomeObject = function() {
    var self          = this;
    var privateMember = "I am a private member";
    var privateMethod = function() {
        console.log(self.publicMember);
    };

    this.publicMember = "I am a public member";
    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
    this.privateMethodWrapper = function() {
        privateMethod();
    }
};

var o = new SomeObject();
console.log(typeof o.privateMethod, typeof o.publicMethod, typeof o.privateMethodWrapper);
o.privateMethodWrapper();</pre>
<p><strong>Output:</strong></p>
<pre>undefined function function
I am a private member I am a public member</pre>
<p>Notice that a new private member, <tt>self</tt>, was introduced and provides a reference to <tt>this</tt> within <tt>privateMethod</tt> via the closure property.  This method is agreeable for most situations; however, my syntax highlighter doesn&#8217;t highlight <tt>self</tt> the same as it does <tt>this</tt>, so I prefer the following method.</p>
<p>The third method effectively &#8220;locks in&#8221; the value of <tt>this</tt> within the private method.  It is the most preferable in that it allows you to have a normal definition using <tt>this</tt> with the private method as in example #4, and a clean calling context as in example #5.  Both the Dojo and Prototype libraries offer utility methods to do this for us: <a href="http://api.dojotoolkit.org/jsdoc/1.3.2/dojo.hitch">dojo.hitch</a> and <a href="http://api.prototypejs.org/language/function.html#bind-instance_method">function.prototype.bind</a> respectively.  I will show how to use these methods, as well as how write your own utility method for achieving the same results for those of you not using those libraries.</p>
<p><strong>Example 6: Private class methods with context locking using <tt>dojo.hitch</tt></strong></p>
<pre>var SomeObject = function() {
    var privateMember = "I am a private member";
    var privateMethod = dojo.hitch(this, function() {
        console.log(privateMember, this.publicMember);
    });

    this.publicMember = "I am a public member";
    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
    this.privateMethodWrapper = function() {
        privateMethod();
    }
};

var o = new SomeObject();
o.privateMethodWrapper();</pre>
<p><strong>Output:</strong></p>
<pre>I am a private member I am a public member</pre>
<p><strong>Example 7: Private class methods with context locking using Prototype&#8217;s <tt>bind</tt></strong></p>
<pre>var SomeObject = function() {
    var privateMember = "I am a private member";
    var privateMethod = function() {
        console.log(privateMember, this.publicMember);
    }.bind(this);

    this.publicMember = "I am a public member";
    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
    this.privateMethodWrapper = function() {
        privateMethod();
    }
};

var o = new SomeObject();
o.privateMethodWrapper();</pre>
<p><strong>Output:</strong></p>
<pre>I am a private member I am a public member</pre>
<p><strong>Example 8: Private class methods with context locking using custom utility method</strong></p>
<pre>var lockContext = function(context, callback) {
    return function() {
        callback.apply(context, arguments);
    }
};

var SomeObject = function() {
    var privateMember = "I am a private member";
    var privateMethod = lockContext(this, function() {
        console.log(privateMember, this.publicMember);
    });

    this.publicMember = "I am a public member";
    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
    this.privateMethodWrapper = function() {
        privateMethod();
    }
};

var o = new SomeObject();
o.privateMethodWrapper();</pre>
<p><strong>Output:</strong></p>
<pre>I am a private member I am a public member</pre>
<p><strong>Example 9: Private class methods with context locking using custom utility method (prototypal variation)</strong></p>
<pre>Function.prototype.lockContext = function(context) {
    var self = this;
    return function() {
        self.apply(context, arguments);
    }
};

var SomeObject = function() {
    var privateMember = "I am a private member";
    var privateMethod = function() {
        console.log(privateMember, this.publicMember);
    }.lockContext(this);

    this.publicMember = "I am a public member";
    this.publicMethod = function() {
        console.log(privateMember, this.publicMember);
    };
    this.privateMethodWrapper = function() {
        privateMethod();
    }
};

var o = new SomeObject();
o.privateMethodWrapper();</pre>
<p><strong>Output:</strong></p>
<pre>I am a private member I am a public member</pre>
<p>As you can see, all four of these context locking methods (examples #6 &#8211; #9) allow you to keep the executing scope of your private method clean,  freeing you to write the body of your private method as you would any other, and removes the superfluous &lt;tt&gt;self&lt;/tt&gt; reference.  I&#8217;ll let you decide which method works best for you, but I think the prototypal approach is the cleanest.  For more information on how context locking works, see the MDC references for <tt><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Function/apply">apply</a></tt> and <tt><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Function/call">call</a></tt>.</p>
<h2>Wrapping it Up</h2>
<p>There are definite roles that static and instantiated objects fill.  For me, part of the joy of writing in JavaScript is knowing when to use which, and how to get the most milage out of their differences.  What about you?  Let me know if you have any preferences or guidelines when it comes to creating and using objects in JavaScript.</p>
<p><div class="aggregator-exclude"><a href="http://www.zebrakick.com/blog/object-literals-vs-constructed-objects-in-javascript/">Object Literals vs. Constructed Objects in JavaScript</a> posted on the <a href="http://www.zebrakick.com/blog">Zebra Kick Blog</a> a <a href="http://www.zebrakick.com">Riverside Web Design Company</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zebrakick.com/blog/object-literals-vs-constructed-objects-in-javascript/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Generic Singleton Factory in JavaScript</title>
		<link>http://www.zebrakick.com/blog/javascript-generic-singleton-factory/</link>
		<comments>http://www.zebrakick.com/blog/javascript-generic-singleton-factory/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 07:25:21 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[chaining]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[factory]]></category>
		<category><![CDATA[generics]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[static variable]]></category>

		<guid isPermaLink="false">http://www.zebrakick.com/blog/?p=38</guid>
		<description><![CDATA[I recently contributed this little tidbit to stackoverflow&#8217;s Hidden Features of JavaScript and thought it would be best to elaborate it on it fully. In a recent client project, I needed a generic method to produce singleton instances of interface widgets.  This is the method that I came up with and it works pretty well. [...]<p><div class="aggregator-exclude"><a href="http://www.zebrakick.com/blog/javascript-generic-singleton-factory/">Generic Singleton Factory in JavaScript</a> posted on the <a href="http://www.zebrakick.com/blog">Zebra Kick Blog</a> a <a href="http://www.zebrakick.com">Riverside Web Design Company</a></div></p>
]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">I recently contributed this little tidbit to stackoverflow&#8217;s <a title="Hidden Features of JavaScript" href="http://stackoverflow.com/questions/61088/hidden-features-of-javascript/" target="_blank">Hidden Features of JavaScript</a> and thought it would be best to elaborate it on it fully. In a recent client project, I needed a generic method to produce singleton instances of interface widgets.  This is the method that I came up with and it works pretty well.  Before we begin, these are not singleton classes in the normal sense, but a generic singleton factory.<span id="more-38"></span></p>
<p>Lets get started, piece by piece.   First off, we need a means of storing instances internally.  To do that, we need a static variable within our function.</p>
<pre>var getInstance = function(objectName) {
  if ( !getInstance.instances ) {
    getInstance.instances = {};
  }
}</pre>
<p>It doesn&#8217;t do much, but there you have it.  Now that we have somewhere to store our instances, lets finish out the function by instantiating new objects (only once of course) and returning those singleton instances.</p>
<pre>var getInstance = function(objectName) {
  if ( !getInstance.instances ) {
    getInstance.instances = {};
  }

  if ( !getInstance.instances[objectName] ) {
    getInstance.instances[objectName] = new window[objectName]();
  }

  return getInstance.instances[objectName];
}</pre>
<p>And that&#8217;s it.  Notice the <tt>new window[objectName]();</tt>.  In JavaScript, all objects are contained within/are relative to the <tt>window</tt> object.</p>
<p>Consider the following two example classes:</p>
<pre>// Normal, globally accessible object
var object = function() {
 this.property = "zebras!"
};

// Static object acting as a namespace
var com = {
  project: {
    widgetAbc: function() {
      this.xyz = 1010101;
    }
  }
};</pre>
<p>Basic usage of our new generic singleton factory is as follows:</p>
<pre>var instance = getInstance("object");</pre>
<p>So far, <tt>getInstance</tt> works in most instances, but if you&#8217;re in an environment where you&#8217;re using static, nested objects to create your own brand of namespacing (as in <tt>getInstance("com.project.widgetAbc")</tt>), then this method falls a little short as is; however, there is solution.</p>
<pre>var getInstance = function(objectName) {
  // Static instances container
  if ( !getInstance.instances ) {
    getInstance.instances = {};
  }

  // If an instance hasn't been created yet...
  if ( !getInstance.instances[objectName] ) {
    // All instances are relative to the window object
    var object = window;
    // Handle static object nesting/chaining by splitting on the
    // object separator "."
    var parts  = objectName.split(".");

    // Traverse through the nested static objects until we reach
    // the last one in the chain.
    for ( var i in parts ) {
      object = object[ parts[i] ];
    }

    // Create and store the object's instance
    getInstance.instances[objectName] = new object;
  }

  // Return the stored object's instance
  return getInstance.instances[objectName];
}</pre>
<p>I think the comments spell out the changes fairly well, but lets give it a once-over just to be sure.  The major change is that <tt>objectName</tt> is split on the member operator (<tt>.</tt>), yielding any array like <tt>["com", "project", "widgetAbc"]</tt>.  We then iterate through that array, nesting each member within itself starting from the <tt>window</tt> object until we reach the end of the chain.  This gives us an instantiable reference to the requested class.</p>
<p>Lastly, you&#8217;ll notice that on the line, <tt>getInstance.instances[objectName] = new object;</tt>, I omitted the <tt>()</tt>.  It works with or without the parenthesis, but I prefer to omit them to distinguish the fact that we are not instantiating an object called &#8220;object&#8221;, but instead, are instantiating the object referenced by the variable &#8220;object.&#8221;</p>
<p>Now that we have all that settled, we can use our factory as follows:</p>
<pre>var someObject = getInstance("object");
var someWidget = getInstance("com.project.widgetAbc");</pre>
<p>I hope that shed some light on the subject.  Feel free to ask a question or two, and don&#8217;t hesitate to tell me if I made any mistakes that need correcting.</p>
<p><div class="aggregator-exclude"><a href="http://www.zebrakick.com/blog/javascript-generic-singleton-factory/">Generic Singleton Factory in JavaScript</a> posted on the <a href="http://www.zebrakick.com/blog">Zebra Kick Blog</a> a <a href="http://www.zebrakick.com">Riverside Web Design Company</a></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zebrakick.com/blog/javascript-generic-singleton-factory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
