tor-browser

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

order-after-define-property.js (1376B)


      1 // Copyright (C) 2020 Alexey Shvayka. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-reflect.ownkeys
      6 description: >
      7  Property names are returned in ascending chronological order of creation
      8  that is unaffected by [[DefineOwnProperty]].
      9 info: |
     10  Reflect.ownKeys ( target )
     11 
     12  [...]
     13  2. Let keys be ? target.[[OwnPropertyKeys]]().
     14  3. Return CreateArrayFromList(keys).
     15 
     16  OrdinaryOwnPropertyKeys ( O )
     17 
     18  [...]
     19  4. For each own property key P of O that is a Symbol, in ascending
     20  chronological order of property creation, do
     21    a. Add P as the last element of keys.
     22  5. Return keys.
     23 
     24  [[OwnPropertyKeys]] ( )
     25 
     26  [...]
     27  7. For each own property key P of O such that Type(P) is String and P is not
     28  an array index, in ascending chronological order of property creation, do
     29    a. Add P as the last element of keys.
     30  [...]
     31  9. Return keys.
     32 features: [Symbol, Reflect]
     33 includes: [compareArray.js]
     34 ---*/
     35 
     36 var obj = {};
     37 var symA = Symbol("a");
     38 var symB = Symbol("b");
     39 obj[symA] = 1;
     40 obj[symB] = 2;
     41 Object.defineProperty(obj, symA, {configurable: false});
     42 assert.compareArray(Reflect.ownKeys(obj), [symA, symB]);
     43 
     44 var str = new String("");
     45 str.a = 1;
     46 str.b = 2;
     47 Object.defineProperty(str, "a", {
     48  get: function() {},
     49 });
     50 assert.compareArray(Reflect.ownKeys(str), ["length", "a", "b"]);
     51 
     52 reportCompare(0, 0);