iterator-as-proxy.js (851B)
1 // Copyright (C) 2013 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 es6id: 13.6.4.13 5 description: > 6 Iterators that are implemented as proxies should behave identically to 7 non-proxy versions. 8 features: [Proxy, Symbol.iterator] 9 ---*/ 10 11 var iterable = {}; 12 var nextResult = { value: 23, done: false }; 13 var lastResult = { value: null, done: true }; 14 var i; 15 16 var iterator = { 17 next: function() { 18 var result = nextResult; 19 nextResult = lastResult; 20 return result; 21 } 22 }; 23 var proxiedIterator = new Proxy(iterator, { 24 get: function(target, name) { 25 return target[name]; 26 } 27 }); 28 iterable[Symbol.iterator] = function() { return proxiedIterator; }; 29 30 i = 0; 31 for (var x of iterable) { 32 assert.sameValue(x, 23); 33 i++; 34 } 35 36 assert.sameValue(i, 1); 37 38 reportCompare(0, 0);