天天看點

學習JavaScript王者歸來_02

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<code>&lt;html&gt;</code>

<code>    </code><code>&lt;head&gt;</code>

<code>        </code><code>&lt;title&gt;&lt;/title&gt;</code>

<code>        </code><code>&lt;script&gt;</code>

<code>            </code><code>function</code>

<code>ArrayList(array) {</code>

<code>                </code><code>this</code><code>._arr =</code><code>typeof</code><code>(array) =</code><code>"string"</code>

<code>? array.split(</code><code>","</code><code>) : array;</code>

<code>            </code><code>}</code>

<code>            </code><code>//定義一個$each函數,這個函數接受一個閉包作為參數</code>

<code>            </code><code>ArrayList.prototype.$each =</code><code>function</code><code>(closure) {</code>

<code>                </code><code>var</code>

<code>ret = [];</code>

<code>                </code><code>for</code><code>(</code><code>var</code>

<code>i = 0; i &lt;</code><code>this</code><code>._arr.length; i++) {</code>

<code>                    </code><code>ret.push(closure.call(</code><code>this</code><code>,</code><code>this</code><code>._arr[i]));</code>

<code>                </code><code>}</code>

<code>                </code><code>return</code>

<code>ret;</code>

<code>            </code><code>ArrayList.prototype.add =</code><code>function</code><code>(num) {</code>

<code>this</code><code>.$each(</code><code>function</code><code>(a) {</code><code>return</code>

<code>parseFloat(a) + parseFloat(num)});</code>

<code>            </code><code>ArrayList.prototype.multiply =</code><code>function</code><code>(factor) {</code>

<code>parseFloat(a) * parseFloat(factor)});</code>

<code>        </code><code>&lt;/script&gt;</code>

<code>    </code><code>&lt;/head&gt;</code>

<code>    </code><code>&lt;body&gt;</code>

<code>        </code><code>&lt;input id =</code><code>"list"</code>

<code>type =</code><code>"text"</code>

<code>value =</code><code>"1,2,3,4"</code>

<code>/&gt;</code>

<code>        </code><code>&lt;input id =</code><code>"num"</code>

<code>value =</code><code>"2"</code>

<code>        </code><code>&lt;input type =</code><code>"button"</code>

<code>value =</code><code>"Add"</code>

<code>onClick =</code><code>"result.value = (new ArrayList(list.value)).add(num.value)"</code>

<code>value =</code><code>"Multiply"</code>

<code>onClick =</code><code>"result.value = (new ArrayList(list.value)).multiply(num.value)"</code>

<code>        </code><code>&lt;br /&gt;&lt;input type =</code><code>"text"</code>

<code>id =</code><code>"result"</code>

<code>    </code><code>&lt;/body&gt;</code>

<code>&lt;/html&gt;</code>

JS異常

<code>try</code>

<code>{</code>

<code>    </code><code>var</code>

<code>n = prompt(</code><code>"Please enter a positive number"</code><code>);</code>

<code>f = factorial(n);</code>

<code>    </code><code>alert(n +</code><code>"! = "</code>

<code>+ f);</code>

<code>}</code><code>catch</code><code>(ex) {</code>

<code>    </code><code>if</code><code>(ex</code><code>instanceof</code>

<code>NonePositiveError) {</code>

<code>        </code><code>aoert(ex.message);</code>

<code>    </code><code>}</code><code>else</code>

<code>        </code><code>throw</code><code>(ex);</code>

<code>    </code><code>}</code>

<code>} finally {</code>

<code>    </code> 

<code>}</code>

<code>function</code>

<code>NonePositiveError(n) {</code>

<code>    </code><code>n = n ||</code><code>""</code><code>;</code>

<code>    </code><code>this</code><code>.message =</code><code>""</code><code>;</code>

<code>NonePositiveError.prototype =</code><code>new</code>

<code>Error();</code>

<code>factorial(n) {</code>

<code>    </code><code>n = parseInt(n);</code>

<code>    </code><code>if</code><code>(isNaN(n)) {</code>

<code>        </code><code>throw</code><code>(</code><code>new</code>

<code>TypeError());</code>

<code>if</code><code>(n &lt;= 0) {</code>

<code>NonePositiveError(n));</code>

<code>        </code><code>return</code>

<code>n &lt;= 1 ? 1 : n * factorial(n - 1);</code>