OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 assertEquals('ab', result, "ab-nodeep"); | 77 assertEquals('ab', result, "ab-nodeep"); |
78 | 78 |
79 var result = ''; | 79 var result = ''; |
80 for (var p in { get a() {}, b : 1}) { result += p; } | 80 for (var p in { get a() {}, b : 1}) { result += p; } |
81 assertEquals('ab', result, "abget"); | 81 assertEquals('ab', result, "abget"); |
82 | 82 |
83 var result = ''; | 83 var result = ''; |
84 for (var p in { get a() {}, set a(x) {}, b : 1}) { result += p; } | 84 for (var p in { get a() {}, set a(x) {}, b : 1}) { result += p; } |
85 assertEquals('ab', result, "abgetset"); | 85 assertEquals('ab', result, "abgetset"); |
86 | 86 |
| 87 |
| 88 // Test that for-in in the global scope works with a keyed property as "each". |
| 89 // Test outside a loop and in a loop for multiple iterations. |
| 90 a = [1,2,3,4]; |
| 91 x = {foo:5, bar:6, zip:7, glep:9, 10:11}; |
| 92 delete x.bar; |
| 93 y = {} |
| 94 |
| 95 for (a[2] in x) { |
| 96 y[a[2]] = x[a[2]]; |
| 97 } |
| 98 |
| 99 assertEquals(5, y.foo, "y.foo"); |
| 100 assertEquals("undefined", typeof y.bar, "y.bar"); |
| 101 assertEquals(7, y.zip, "y.zip"); |
| 102 assertEquals(9, y.glep, "y.glep"); |
| 103 assertEquals(11, y[10], "y[10]"); |
| 104 assertEquals("undefined", typeof y[2], "y[2]"); |
| 105 assertEquals("undefined", typeof y[0], "y[0]"); |
| 106 |
| 107 for (i=0 ; i < 3; ++i) { |
| 108 y = {} |
| 109 |
| 110 for (a[2] in x) { |
| 111 y[a[2]] = x[a[2]]; |
| 112 } |
| 113 |
| 114 assertEquals(5, y.foo, "y.foo"); |
| 115 assertEquals("undefined", typeof y.bar, "y.bar"); |
| 116 assertEquals(7, y.zip, "y.zip"); |
| 117 assertEquals(9, y.glep, "y.glep"); |
| 118 assertEquals(11, y[10], "y[10]"); |
| 119 assertEquals("undefined", typeof y[2], "y[2]"); |
| 120 assertEquals("undefined", typeof y[0], "y[0]"); |
| 121 } |
OLD | NEW |