Reflect.defineProperty()
is like Object.defineProperty()
but returns a Boolean.
the function itself
is static on the Reflect
object
is of type function
the 1st parameter is the object on which to define a property
fails if it is not an object
accepts an object
accepts an instance (of a class)
2nd parameter is the name of the property to be defined on the object (normally a string)
works with a normal
string
a number gets converted into a string
undefined
also gets converted into a string (watch out!)
it can be a symbol
the value
is part of the 3rd parameter, given as a property in an object {value: ...}
contains the initial value of the property, as an object in the property value
can be of any type (even itself)
the return value of the function indicates wether the property was defined successfully
returns true
when the property was created (which requires the 3rd parameter too!!!)
no matter what the value of the property is (just the 3rd param has to exist as {}
)
returns false
when a non-configurable property wants to be changed to configurable=true
when the object we want to add a property to is frozen
Links
The specification for this function.
The MDN docs for this function.
Announcement of this kata on twitter.
Required Knowledge
- `let` declaration (Block scope)
- `const` declaration (Block scope)
- creation (Class)
- basics (Symbol)
- `Symbol.for()` (Symbol)
Related Katas
Reflect
- basics
Reflect.apply()
Reflect.getPrototypeOf()
Reflect.construct()
Reflect.defineProperty()
Difficulty Level
INTERMEDIATE
First Published
31 July 2015
Stats
15 tests to solve