|
1 function isnan(n) { return n !== n } |
|
2 |
|
3 function f(x) { |
|
4 var sum = 0; |
|
5 for (var i = 0; i < 100; ++i) |
|
6 sum += x.x; |
|
7 return sum; |
|
8 } |
|
9 var o = {}; |
|
10 assertEq(isnan(f(o)), true); |
|
11 o.x = 1; |
|
12 assertEq(f(o), 100); |
|
13 var o = {a:1, b:2}; |
|
14 assertEq(isnan(f(o)), true); |
|
15 o.x = 2; |
|
16 assertEq(f(o), 200); |
|
17 |
|
18 function g(x) { |
|
19 var sum = 0; |
|
20 for (var i = 0; i < 100; ++i) |
|
21 sum += x.x; |
|
22 return sum; |
|
23 } |
|
24 var o = {c:1, x:1}; |
|
25 assertEq(g(o), 100); |
|
26 var o = {}; |
|
27 assertEq(isnan(g(o)), true); |
|
28 |
|
29 function h(x) { |
|
30 var sum = 0; |
|
31 for (var i = 0; i < 100; ++i) |
|
32 sum += x.x; |
|
33 return sum; |
|
34 } |
|
35 |
|
36 var proto1 = {}; |
|
37 var proto2 = Object.create(proto1); |
|
38 var o = Object.create(proto2); |
|
39 assertEq(isnan(f(o)), true); |
|
40 assertEq(isnan(g(o)), true); |
|
41 assertEq(isnan(h(o)), true); |
|
42 proto2.x = 2; |
|
43 assertEq(f(o), 200); |
|
44 assertEq(g(o), 200); |
|
45 assertEq(h(o), 200); |
|
46 var o = {} |
|
47 assertEq(isnan(f(o)), true); |
|
48 assertEq(isnan(g(o)), true); |
|
49 assertEq(isnan(h(o)), true); |