tor-browser

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

property-enumeration-order.js (1271B)


      1 function check(obj, expected, expectedAll = expected) {
      2    assertEq(Reflect.ownKeys(obj).join(""), expectedAll);
      3    assertEq(Object.getOwnPropertyNames(obj).join(""), expectedAll);
      4    assertEq(Object.keys(obj).join(""), expected);
      5    var s = "";
      6    for (var x in obj)
      7 s += x;
      8    assertEq(s, expected);
      9 }
     10 
     11 var obj = {2: 0, 0: 0, "foo": "bar", 4: 0, "-5": 1};
     12 check(obj, "024foo-5");
     13 obj.x = 1;
     14 check(obj, "024foo-5x");
     15 obj[1] = 1;
     16 check(obj, "0124foo-5x");
     17 obj[1.2] = 1;
     18 check(obj, "0124foo-5x1.2");
     19 Object.defineProperty(obj, '3', {value:1,enumerable:false,configurable:false,writable:false});
     20 check(obj, "0124foo-5x1.2", "01234foo-5x1.2");
     21 delete obj[2];
     22 check(obj, "014foo-5x1.2", "0134foo-5x1.2");
     23 obj[2] = 1;
     24 check(obj, "0124foo-5x1.2", "01234foo-5x1.2");
     25 
     26 assertEq(JSON.stringify(obj), '{"0":0,"1":1,"2":1,"4":0,"foo":"bar","-5":1,"x":1,"1.2":1}');
     27 
     28 var arr = [1, 2, 3];
     29 Object.defineProperty(arr, '3', {value:1,enumerable:true,configurable:true,writable:true});
     30 check(arr, "0123", "0123length");
     31 Object.defineProperty(arr, '1000', {value:1,enumerable:true,configurable:true,writable:false});
     32 check(arr, "01231000", "01231000length");
     33 
     34 arr = [1, 2, , , 5];
     35 check(arr, "014", "014length");
     36 arr[0xfffffff] = 4;
     37 check(arr, "014268435455", "014268435455length");