Add example of destructuring assignment in class constructors for options

This commit is contained in:
Gabe Hollombe 2012-06-10 11:19:54 +07:00
parent 1731f7d321
commit 7fdd21b26d
4 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,4 @@
class Person
constructor: (options) ->
{@name, @age, @height} = options

View File

@ -761,6 +761,11 @@ Expressions
Destructuring assignment can even be combined with splats.
</p>
<%= code_for('patterns_and_splats', 'contents.join("")') %>
<p>
Destructuring assignment is also useful when combined with class constructors
to assign propeties to your instance from an options object passed to the constructor.
</p>
<%= code_for('constructor_destructuring', 'contents.join("")') %>
<p>
<span id="fat_arrow" class="bookmark"></span>

View File

@ -0,0 +1,12 @@
// Generated by CoffeeScript 1.3.3
var Person;
Person = (function() {
function Person(options) {
this.name = options.name, this.age = options.age, this.height = options.height;
}
return Person;
})();

View File

@ -1735,6 +1735,37 @@ _ref <span class="Keyword">=</span> tag.<span class="LibraryFunction">split</spa
tag = "<impossible>";
_ref = tag.split(""), open = _ref[0], contents = 3 <= _ref.length ? __slice.call(_ref, 1, _i = _ref.length - 1) : (_i = 1, []), close = _ref[_i++];
;alert(contents.join(""));'>run: contents.join("")</div><br class='clear' /></div>
<p>
Destructuring assignment is also useful when combined with class constructors
to assign propeties to your instance from an options object passed to the constructor.
</p>
<div class='code'><pre class="idle">class Person
constructor: (options) -&gt;
{@name, @age, @height} = options
</pre><pre class="idle"><span class="Storage">var</span> Person;
Person <span class="Keyword">=</span> (<span class="Storage">function</span>() {
<span class="Storage">function</span> <span class="FunctionName">Person</span>(<span class="FunctionArgument">options</span>) {
<span class="Variable">this</span>.<span class="LibraryConstant">name</span> <span class="Keyword">=</span> options.<span class="LibraryConstant">name</span>, <span class="Variable">this</span>.age <span class="Keyword">=</span> options.age, <span class="Variable">this</span>.<span class="LibraryConstant">height</span> <span class="Keyword">=</span> options.<span class="LibraryConstant">height</span>;
}
<span class="Keyword">return</span> Person;
})();
</pre><script>window.example29 = "class Person\n constructor: (options) -> \n {@name, @age, @height} = options\n\nalert contents.join(\"\")"</script><div class='minibutton load' onclick='javascript: loadConsole(example29);'>load</div><div class='minibutton ok' onclick='javascript: var Person;
Person = (function() {
function Person(options) {
this.name = options.name, this.age = options.age, this.height = options.height;
}
return Person;
})();
;alert(contents.join(""));'>run: contents.join("")</div><br class='clear' /></div>
<p>