It should be false
, not "false"
. In other words, it should be a boolean.
If you don't pass a boolean, then whatever value you give will be coerced to a boolean, and Boolean("false") === true; // true
, so you were effectively passing writable:true
.
var TheDarkKnight = Object.create(Superhero, {
"name": {
value:"Batman",
writable:false // boolean false (or any falsey value)
}
});
TheDarkKnight.name; //"Batman";
TheDarkKnight.name = "Superman";
TheDarkKnight.name; //"Batman";
Also, note that writable:false
is the default value, so if you just remove that setting from the descriptor, the property will not be writable.