<?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>Bubble Foundry &#187; constructors</title>
	<atom:link href="http://www.bubblefoundry.com/blog/tag/constructors/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bubblefoundry.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 18:23:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://www.bubblefoundry.com/?pushpress=hub'/>
		<item>
		<title>Javascript Constructors with an Array of Parameters</title>
		<link>http://www.bubblefoundry.com/blog/2010/03/javascript-constructors-with-an-array-of-parameters/</link>
		<comments>http://www.bubblefoundry.com/blog/2010/03/javascript-constructors-with-an-array-of-parameters/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 08:54:54 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[constructors]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.bubblefoundry.com/?p=321</guid>
		<description><![CDATA[Say we have: function myObj&#40;&#41; &#123; this.input = Array.prototype.slice.call&#40;arguments&#41;; &#125; We can pass a variable or an array but : var myObj1 = new myObj&#40;1&#41;; myObj1.input // -&#62; [1] var myArr = &#91;1, 2, 3&#93;; var myObj2 = new myObj&#40;myArr&#41;; myObj2.input // -&#62; [[1, 2, 3]] How then can we get, while still using myArr: [...]]]></description>
			<content:encoded><![CDATA[<p>Say we have:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> myObj<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">input</span> <span style="color: #339933;">=</span> Array.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">slice</span>.<span style="color: #660066;">call</span><span style="color: #009900;">&#40;</span>arguments<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>We can pass a variable or an array but :</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myObj1 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> myObj<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
myObj1.<span style="color: #660066;">input</span> <span style="color: #006600; font-style: italic;">// -&gt; [1]</span>
<span style="color: #003366; font-weight: bold;">var</span> myArr <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> myObj2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> myObj<span style="color: #009900;">&#40;</span>myArr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
myObj2.<span style="color: #660066;">input</span> <span style="color: #006600; font-style: italic;">// -&gt; [[1, 2, 3]]</span></pre></div></div>

<p>How then can we get, while still using myArr:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">myObj3.<span style="color: #660066;">input</span> <span style="color: #006600; font-style: italic;">// -&gt; [1, 2, 3]</span></pre></div></div>

<p>Here&#8217;s how, courtesy of <a href="http://www.ozoneasylum.com/30593">this site</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myObj3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> myObj<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
myObj.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">constructor</span>.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span>myObj3<span style="color: #339933;">,</span> myArr<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Note that <code>myObj3</code> needn&#8217;t be an instance of <code>myObj</code>, it just needs to be an <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Function/Apply#Parameters">existing value</a> so that the global object isn&#8217;t used as the value of <code>this</code>.</p>
<p>This is pretty cool, though of course you can do it much easier in languages such as Scala:</p>

<div class="wp_syntax"><div class="code"><pre class="scala" style="font-family:monospace;"><span style="color: #0000ff; font-weight: bold;">val</span> myObj4 <span style="color: #000080;">=</span> <span style="color: #0000ff; font-weight: bold;">new</span> myObj<span style="color: #F78811;">&#40;</span>myArr<span style="color: #000080;">:</span> <span style="color: #000080;">_*</span><span style="color: #F78811;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.bubblefoundry.com/blog/2010/03/javascript-constructors-with-an-array-of-parameters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

