[英]How does JavaScript “writable” property descriptor work?
為什么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
,而不是"false"
。 換句話說,它應該是一個布爾值。
如果您不傳遞布爾值,那么您提供的任何值都將強制轉換為布爾值,並且Boolean("false") === true; // true
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
是默認值,因此,如果僅從描述符中刪除該設置,則該屬性將不可寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.