Reflect.isExtensible()
The Reflect.isExtensible() method checks if an object is extensible
(can have properties added).
It is similar to Object.isExtensible().
Example
let answer = Reflect.isExtensible(obj);
The same as using Object.isExtensible():
let answer = Object.isExtensible(obj);
Object vs Reflect
Object.isExtensible()
- Accepts any value
- Performs ToObject() coercion
- Primitives become wrapper objects (Number, Boolean, etc.)
- Wrapper objects are not extensible
- Returns false for primitives
- Never throws for primitives
Reflect.isExtensible()
- Meant to mirror internal ECMAScript operations
- Does not perform type coercion
- Only accepts objects
- Throws a TypeError if the target is not an object
Reflect.isExtensible(1); // TypeError
Object.isExtensible(1); // false (does not throw)
Syntax
Reflect.isExtensible(obj)
Parameters
| Parameter | Description |
|---|---|
| obj | Required. The target object. |
Return Value
| Type | Description |
|---|---|
| Boolean |
true if the object is extensible. false if not. |
Errors
| Type | Description |
|---|---|
| TypeError | Thrown if obj is not an object. |
Reflect Methods:
Reflect.apply()
Reflect.construct()
Reflect.defineProperty()
Reflect.deleteProperty()
Reflect.get()
Reflect.getOwnPropertyDescriptor()
Reflect.getPrototypeOf()
Reflect.has()
Reflect.isExtensible()
Reflect.ownKeys()
Reflect.preventExtensions()
Reflect.set()
Reflect.setPrototypeOf()
Browser Support
Reflect.isExtensible() is an ECMAScript6 (ES6 2015) feature.
JavaScript 2015 is supported in all browsers since June 2017:
| Chrome 51 |
Edge 15 |
Firefox 54 |
Safari 10 |
Opera 38 |
| May 2016 | Apr 2017 | Jun 2017 | Sep 2016 | Jun 2016 |