Reflect.preventExtensions()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
The Reflect.preventExtensions()
static method is like Object.preventExtensions()
. It prevents new properties from ever being added to an object (i.e., prevents future extensions to the object).
Try it
Syntax
Reflect.preventExtensions(target)
Parameters
target
-
The target object on which to prevent extensions.
Return value
A Boolean
indicating whether or not the target was successfully set to prevent extensions.
Exceptions
TypeError
-
Thrown if
target
is not an object.
Description
Reflect.preventExtensions()
provides the reflective semantic of preventing extensions of an object. The differences with Object.preventExtensions()
are:
Reflect.preventExtensions()
throws aTypeError
if the target is not an object, whileObject.preventExtensions()
always returns non-object targets as-is.Reflect.preventExtensions()
returns aBoolean
indicating whether or not the target was successfully set to prevent extensions, whileObject.preventExtensions()
returns the target object.
Reflect.preventExtensions()
invokes the [[PreventExtensions]]
object internal method of target
.
Examples
Using Reflect.preventExtensions()
See also Object.preventExtensions()
.
// Objects are extensible by default.
const empty = {};
Reflect.isExtensible(empty); // true
// ...but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false
Difference with Object.preventExtensions()
If the target
argument to this method is not an object (a primitive), then it will cause a TypeError
. With Object.preventExtensions()
, a non-object target
will be returned as-is without any errors.
Reflect.preventExtensions(1);
// TypeError: 1 is not an object
Object.preventExtensions(1);
// 1
Specifications
Specification |
---|
ECMAScript Language Specification # sec-reflect.preventextensions |
Browser compatibility
BCD tables only load in the browser