簡體   English   中英

JavaScript“可寫”屬性描述符如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM