为什么 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"
。换句话说,它应该是一个 bool 值。
如果您不传递 bool 值,那么无论您提供什么值都将被强制转换为 bool 值,并且 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
是默认值,因此如果您只是从描述符中删除该设置,该属性将不可写。
关于javascript - JavaScript "writable"属性描述符是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892375/