JavaScript“可写”属性描述符如何工作?

2024-05-03

为什么 JavaScript“可写”属性描述符不禁止任何属性更改?

例如:

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

TheDarkKnight.name; //"Batman";

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

我想TheDarkKnight.name仍应返回"Batman"在我尝试将其更改为另一个值之后,因为我将“可写”属性描述符设置为false.

那么如何正确使用呢?


它应该是false, not "false"。换句话说,它应该是一个布尔值。

如果您不传递布尔值,那么您给出的任何值都将被强制为布尔值,并且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是默认值,因此如果您只是从描述符中删除该设置,则该属性将不可写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript“可写”属性描述符如何工作? 的相关文章

随机推荐