{
 "caniuse": [
  "proxy"
 ],
 "compat_features": [
  "javascript.builtins.Proxy",
  "javascript.builtins.Proxy.Proxy",
  "javascript.builtins.Proxy.handler.apply",
  "javascript.builtins.Proxy.handler.construct",
  "javascript.builtins.Proxy.handler.defineProperty",
  "javascript.builtins.Proxy.handler.deleteProperty",
  "javascript.builtins.Proxy.handler.get",
  "javascript.builtins.Proxy.handler.getOwnPropertyDescriptor",
  "javascript.builtins.Proxy.handler.getPrototypeOf",
  "javascript.builtins.Proxy.handler.has",
  "javascript.builtins.Proxy.handler.isExtensible",
  "javascript.builtins.Proxy.handler.ownKeys",
  "javascript.builtins.Proxy.handler.preventExtensions",
  "javascript.builtins.Proxy.handler.set",
  "javascript.builtins.Proxy.handler.setPrototypeOf",
  "javascript.builtins.Proxy.revocable",
  "javascript.builtins.Reflect",
  "javascript.builtins.Reflect.apply",
  "javascript.builtins.Reflect.construct",
  "javascript.builtins.Reflect.defineProperty",
  "javascript.builtins.Reflect.deleteProperty",
  "javascript.builtins.Reflect.get",
  "javascript.builtins.Reflect.getOwnPropertyDescriptor",
  "javascript.builtins.Reflect.getPrototypeOf",
  "javascript.builtins.Reflect.has",
  "javascript.builtins.Reflect.isExtensible",
  "javascript.builtins.Reflect.ownKeys",
  "javascript.builtins.Reflect.preventExtensions",
  "javascript.builtins.Reflect.set",
  "javascript.builtins.Reflect.setPrototypeOf"
 ],
 "description": "The Proxy and Reflect JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).",
 "description_html": "The <code>Proxy</code> and <code>Reflect</code> JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).",
 "group": [
  "javascript"
 ],
 "kind": "feature",
 "name": "Proxy and Reflect",
 "snapshot": [
  "ecmascript-2015"
 ],
 "spec": [
  "https://tc39.es/ecma262/multipage/reflection.html#sec-reflection"
 ],
 "status": {
  "baseline": "high",
  "baseline_high_date": "2019-03-20",
  "baseline_low_date": "2016-09-20",
  "by_compat_key": {
   "javascript.builtins.Proxy": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.Proxy": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.apply": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.construct": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.defineProperty": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.deleteProperty": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.get": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.getOwnPropertyDescriptor": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.getPrototypeOf": {
    "baseline": "high",
    "baseline_high_date": "2022-07-15",
    "baseline_low_date": "2020-01-15",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "79",
     "firefox": "49",
     "firefox_android": "49",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.has": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.isExtensible": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "31",
     "firefox_android": "31",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.ownKeys": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.preventExtensions": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "22",
     "firefox_android": "22",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.set": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "18",
     "firefox_android": "18",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.handler.setPrototypeOf": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "49",
     "firefox_android": "49",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Proxy.revocable": {
    "baseline": "high",
    "baseline_high_date": "2020-06-06",
    "baseline_low_date": "2017-12-06",
    "support": {
     "chrome": "63",
     "chrome_android": "63",
     "edge": "12",
     "firefox": "34",
     "firefox_android": "34",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.apply": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.construct": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.defineProperty": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.deleteProperty": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.get": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.getOwnPropertyDescriptor": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.getPrototypeOf": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.has": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.isExtensible": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.ownKeys": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.preventExtensions": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.set": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   },
   "javascript.builtins.Reflect.setPrototypeOf": {
    "baseline": "high",
    "baseline_high_date": "2019-03-20",
    "baseline_low_date": "2016-09-20",
    "support": {
     "chrome": "49",
     "chrome_android": "49",
     "edge": "12",
     "firefox": "42",
     "firefox_android": "42",
     "safari": "10",
     "safari_ios": "10"
    }
   }
  },
  "support": {
   "chrome": "49",
   "chrome_android": "49",
   "edge": "12",
   "firefox": "18",
   "firefox_android": "18",
   "safari": "10",
   "safari_ios": "10"
  }
 },
 "id": "proxy-reflect",
 "groups": [
  "javascript"
 ],
 "specs": [
  {
   "url": "https://tc39.es/ecma262/multipage/reflection.html#sec-reflection",
   "seriesComposition": "full",
   "shortname": "ecmascript",
   "series": {
    "shortname": "ecmascript",
    "currentSpecification": "ecmascript",
    "title": "ECMAScript® 2027 Language Specification",
    "shortTitle": "ECMAScript",
    "nightlyUrl": "https://tc39.es/ecma262/multipage/"
   },
   "shortTitle": "ECMAScript",
   "tests": {
    "repository": "https://github.com/tc39/test262",
    "testPaths": [
     "test"
    ],
    "excludePaths": [
     "test/intl402"
    ]
   },
   "organization": "Ecma International",
   "groups": [
    {
     "name": "TC39",
     "url": "https://tc39.es/"
    }
   ],
   "nightly": {
    "url": "https://tc39.es/ecma262/multipage/",
    "status": "Editor's Draft",
    "alternateUrls": [],
    "repository": "https://github.com/tc39/ecma262",
    "sourcePath": "spec.html",
    "pages": [
     "https://tc39.es/ecma262/multipage/scope.html",
     "https://tc39.es/ecma262/multipage/conformance.html",
     "https://tc39.es/ecma262/multipage/normative-references.html",
     "https://tc39.es/ecma262/multipage/overview.html",
     "https://tc39.es/ecma262/multipage/notational-conventions.html",
     "https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html",
     "https://tc39.es/ecma262/multipage/abstract-operations.html",
     "https://tc39.es/ecma262/multipage/syntax-directed-operations.html",
     "https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html",
     "https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html",
     "https://tc39.es/ecma262/multipage/ecmascript-language-source-code.html",
     "https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html",
     "https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html",
     "https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html",
     "https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html",
     "https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html",
     "https://tc39.es/ecma262/multipage/error-handling-and-language-extensions.html",
     "https://tc39.es/ecma262/multipage/ecmascript-standard-built-in-objects.html",
     "https://tc39.es/ecma262/multipage/global-object.html",
     "https://tc39.es/ecma262/multipage/fundamental-objects.html",
     "https://tc39.es/ecma262/multipage/numbers-and-dates.html",
     "https://tc39.es/ecma262/multipage/text-processing.html",
     "https://tc39.es/ecma262/multipage/indexed-collections.html",
     "https://tc39.es/ecma262/multipage/keyed-collections.html",
     "https://tc39.es/ecma262/multipage/structured-data.html",
     "https://tc39.es/ecma262/multipage/managing-memory.html",
     "https://tc39.es/ecma262/multipage/control-abstraction-objects.html",
     "https://tc39.es/ecma262/multipage/reflection.html",
     "https://tc39.es/ecma262/multipage/memory-model.html",
     "https://tc39.es/ecma262/multipage/grammar-summary.html",
     "https://tc39.es/ecma262/multipage/additional-ecmascript-features-for-web-browsers.html",
     "https://tc39.es/ecma262/multipage/strict-mode-of-ecmascript.html",
     "https://tc39.es/ecma262/multipage/host-layering-points.html",
     "https://tc39.es/ecma262/multipage/corrections-and-clarifications-in-ecmascript-2015-with-possible-compatibility-impact.html",
     "https://tc39.es/ecma262/multipage/additions-and-changes-that-introduce-incompatibilities-with-prior-editions.html",
     "https://tc39.es/ecma262/multipage/bibliography.html",
     "https://tc39.es/ecma262/multipage/colophon.html",
     "https://tc39.es/ecma262/multipage/copyright-and-software-license.html"
    ],
    "filename": "index.html"
   },
   "title": "ECMAScript® 2027 Language Specification",
   "source": "spec",
   "categories": [
    "browser"
   ],
   "standing": "good",
   "fragment": "sec-reflection"
  }
 ],
 "mdnUrls": [
  {
   "slug": "Web/JavaScript/Reference/Global_Objects/Proxy",
   "title": "Proxy",
   "anchor": null,
   "url": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Proxy"
  },
  {
   "slug": "Web/JavaScript/Reference/Global_Objects/Reflect",
   "title": "Reflect",
   "anchor": null,
   "url": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Reflect"
  }
 ],
 "standardPositions": [],
 "hasNegativeStandardPosition": false,
 "stateOfSurveys": [],
 "chromeUseCounters": {},
 "interop": [],
 "wpt": null,
 "developerSignals": null,
 "bugs": {
  "chrome": [
   "https://code.google.com/p/v8/issues/detail?id=3931"
  ]
 },
 "baselineLowDateAsObject": "2016-09-20T00:00:00.000Z",
 "baselineHighDateAsObject": "2019-03-20T00:00:00.000Z"
}