annotate core-javascript/exercise-2.rst @ 213:0ea90a1819c2 default tip

Custom theming
author Radomir Dopieralski <radomir.dopieralski@allegro.pl>
date Wed, 27 Jun 2012 16:35:54 +0200
parents 58e4f484903f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
107
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
1 Exercise two
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
2 ============
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
3
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
4 Here's some more JavaScript code I found. I've changed the names of
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
5 everything to hide the origin of the code. But it's not something
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
6 I've made up.
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
7
145
58e4f484903f Fix errors caused by mv in previous commit.
Jonathan Fine <jfine@pytex.org>
parents: 130
diff changeset
8 .. literalinclude:: /core-javascript-work/exercise-2.js
107
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
9 :language: javascript
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
10
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
11 The exercise is
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
12
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
13 #. Rewrite the function copy_attributes so that it makes a loop over
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
14
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
15 .. code-block:: javascript
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
16
108
109725c066f4 Add solution to exercise 2.
jf3243
parents: 107
diff changeset
17 var keys = ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg', 'hhh'];
107
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
18
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
19 #. Write a copy_attributes_factory function so that we can write
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
20
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
21 .. code-block:: javascript
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
22
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
23 var copy_attributes = copy_attributes_factory(keys);
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
24
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
25 #. Write a Fields class such that something like this will work:
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
26
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
27 .. code-block:: javascript
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
28
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
29 var aaa = Fields(keys);
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
30 aaa.copy_attributes(src, tgt);
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
31
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
32
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
33 Hints
130
ff23e32bbe29 Sort out table of contents, and various minor changes.
jf3243
parents: 108
diff changeset
34 -----
107
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
35
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
36 #. In JavaScript attribute access and item access are the same.
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
37 First we use item access to set:
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
38
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
39 .. code-block:: javascript
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
40
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
41 js> a = {}
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
42 [object Object]
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
43 js> key = 'attrname'
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
44 attrname
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
45 js> a[key] = 42
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
46 42
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
47
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
48 and then we use attribute access to get:
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
49
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
50 .. code-block:: javascript
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
51
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
52 js> a.attrname
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
53 42
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
54
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
55 #. This applies even for function (aka method) calls.
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
56
108
109725c066f4 Add solution to exercise 2.
jf3243
parents: 107
diff changeset
57 #. Have the factory function store the keys in a closure.
107
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
58
edf611365733 Add exercise-2.rst and its js file.
jf3243
parents:
diff changeset
59 #. There are many ways of writing Fields. Choose one that suits you.