How does the JavaScript property descriptor write?

Why doesn't the "writeable" JavaScript property descriptor prevent any property changes?

For instance:

var TheDarkKnight = Object.create(Superhero, {
    "name": {
        value:"Batman",
        writable:"false"
    }
});

TheDarkKnight.name; //"Batman";

TheDarkKnight.name = "Superman";
TheDarkKnight.name; //"Superman";

I thought I TheDarkKnight.nameshould return "Batman"after I tried to change it to another value, because I set the "writeable" property descriptor to false.

So how to use it correctly?

+2
source share
1 answer

It should be false, not "false". In other words, it must be logical.

, , , Boolean("false") === true; // true, 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";

, writable:false , , , .

+4

Source: https://habr.com/ru/post/1651320/