tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

array-iterator-proxy.js (1006B)


      1 // An array iterator for a proxy calls the traps in a predictable order.
      2 
      3 load(libdir + "asserts.js");
      4 load(libdir + "iteration.js");
      5 
      6 var s = '';
      7 
      8 var handler = {
      9    get: function (recipient, name) {
     10        if (name == 'length') {
     11            s += 'L';
     12            return 2;
     13        } else {
     14            s += name;
     15            return name;
     16        }
     17    }
     18 };
     19 
     20 var it = Array.prototype[Symbol.iterator].call(new Proxy([0, 1], handler));
     21 
     22 assertIteratorNext(it, "0");
     23 s += ' ';
     24 assertIteratorNext(it, "1");
     25 s += ' ';
     26 assertIteratorDone(it, undefined);
     27 assertEq(s, "L0 L1 L");
     28 
     29 s = '';
     30 var ki = Array.prototype.keys.call(new Proxy([0, 1], handler));
     31 
     32 assertIteratorNext(ki, 0);
     33 s += ' ';
     34 assertIteratorNext(ki, 1);
     35 s += ' ';
     36 assertIteratorDone(ki, undefined);
     37 assertEq(s, "L L L");
     38 
     39 s = '';
     40 var ei = Array.prototype.entries.call(new Proxy([0, 1], handler));
     41 
     42 assertIteratorNext(ei, [0, "0"]);
     43 s += ' ';
     44 assertIteratorNext(ei, [1, "1"]);
     45 s += ' ';
     46 assertIteratorDone(ei, undefined);
     47 assertEq(s, "L0 L1 L");