tor-browser

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

call-parameters-new-target.js (1397B)


      1 // Copyright (C) 2017 Aleksey Shvayka. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget
      6 description: >
      7    trap is called with handler object as its context, and parameters are:
      8    target, an array list with the called arguments and the NewTarget
      9 info: |
     10    [[Construct]] (argumentsList, newTarget)
     11 
     12    9. Let newObj be Call(trap, handler, «target, argArray, newTarget»).
     13 features: [Proxy, Reflect, Reflect.construct]
     14 ---*/
     15 
     16 function Target() {}
     17 
     18 function NewTarget() {}
     19 
     20 var handler = {
     21  construct: function(target, args, newTarget) {
     22    assert.sameValue(this, handler, "trap context is the handler object");
     23    assert.sameValue(target, Target, "first parameter is the target object");
     24    assert.sameValue(args.length, 2, "arguments list contains all construct arguments");
     25 
     26    var a = args[0];
     27    var b = args[1];
     28    assert.sameValue(a, 1, "arguments list has first construct argument");
     29    assert.sameValue(b, 2, "arguments list has second construct argument");
     30    assert.sameValue(newTarget, NewTarget, "newTarget is passed as the third parameter");
     31 
     32    return {
     33      sum: a + b
     34    };
     35  },
     36 };
     37 
     38 var P = new Proxy(Target, handler);
     39 var res = Reflect.construct(P, [1, 2], NewTarget);
     40 assert.sameValue(res.sum, 3);
     41 
     42 reportCompare(0, 0);