global-proto-proxy.js 1.15 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var global = this;
;(function () {
  var calledDelete = false;
  var calledGet = false;
  var calledHas = false;
  var calledSet = false;
  var target = {};
  var assertEquals = global.assertEquals;
  var proxy = new Proxy(target, {
    has(target, property) {
      calledHas = true;
      return Reflect.has(target, property);
    },
    get(target, property, receiver) {
      calledGet = true;
      return Reflect.get(target, property, receiver);
    },
    set(targer, property, value, receiver) {
      calledSet = true;
      return Reflect.set(target, property, value, receiver);
    },
    delete(target, property, receiver) {
      calledDelete = true;
      return Reflect.delete(target, property, receiver);
    }
  });
  Object.setPrototypeOf(global, proxy);
  getGlobal;
  assertTrue(calledGet);
  makeGlobal = 2;
  assertTrue(calledSet);
  "findGlobal" in global;
  assertTrue(calledHas);
  var deletedOwn = delete makeGlobal;
  assertTrue(deletedOwn);
  assertEquals(void 0, makeGlobal);
})();