tor-browser

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

Object-getOwnPrivateProperties.js (1114B)


      1 // private fields
      2 
      3 var g = newGlobal({ newCompartment: true });
      4 var dbg = Debugger();
      5 var gobj = dbg.addDebuggee(g);
      6 
      7 g.eval(`
      8 class MyClass {
      9    constructor() {
     10        this.publicProperty = 1;
     11        this.publicSymbol = Symbol("public");
     12        this[this.publicSymbol] = 2;
     13        this.#privateProperty1 = 3;
     14        this.#privateProperty2 = 4;
     15    }
     16    static #privateStatic1
     17    static #privateStatic2
     18    #privateProperty1
     19    #privateProperty2
     20    #privateMethod() {}
     21    publicMethod(){}
     22 }
     23 obj = new MyClass();
     24 klass = MyClass`);
     25 
     26 var privatePropertiesSymbolsDescriptions = gobj
     27  .getOwnPropertyDescriptor("obj")
     28  .value.getOwnPrivateProperties()
     29  .map(sym => sym.description);
     30 
     31 assertEq(
     32  JSON.stringify(privatePropertiesSymbolsDescriptions),
     33  JSON.stringify([`#privateProperty1`, `#privateProperty2`])
     34 );
     35 
     36 var classPrivatePropertiesSymbolsDescriptions = gobj
     37  .getOwnPropertyDescriptor("klass")
     38  .value.getOwnPrivateProperties()
     39  .map(sym => sym.description);
     40 
     41 assertEq(
     42  JSON.stringify(classPrivatePropertiesSymbolsDescriptions),
     43  JSON.stringify([`#privateStatic1`, `#privateStatic2`])
     44 );