Object.create Method In Javascript
Solution 1:
The issue is that writable
and set
/get
are mutually exclusive. The code generates this helpful error in Chrome:
Invalid property. A property cannot both have accessors and be writable...
This makes some logical sense: if you have set
/get
accessors on a property, that property is never going to be written to and/or read from, because any attempts to read/write it will be intercepted by the accessor functions. If you define a property as writable
and give it accessor functions, you are simultaneously saying:
- "The value of this property can be directly altered," and
- "Block all attempts to read and/or write to this property; instead, use these functions."
The error is simply stopping you from specifying a contradiction. I assume from the fact that you wrote a getter and setter, you don't really want the property to be writable
. Just remove that line, and your code runs perfectly.
Solution 2:
Late answer, not looking for votes, but hoping this will be helpful.
There are two kinds of properties. Each property is EITHER:
a data property which has these four attributes:
- value
- writable
- enumerable
- configurable
OR an accessor property which has these four attributes:
- get
- set
- enumerable
- configurable
Therefore there is no property that can have both get
and writable
. That's just the way JavaScript is! Please see section 8.6 of the ECMAScript Standard for the gory details.
Post a Comment for "Object.create Method In Javascript"