1. 程式人生 > >理解JavaScript中的屬性描述符

理解JavaScript中的屬性描述符

http script 如果 als enume this 參數 賦值運算 setter

我們把描述JavaScript中定義內部特性的屬性叫做屬性描述符

分為兩大類:數據描述符和存取描述符

數據描述符是一個擁有可寫或不可寫的屬性(Writable);

存取描述符不包含數據值,是一組擁有getter和setter屬性的描述符;

描述符必須是這兩者之一,不可能都是這兩者;

數據描述符合存取描述符都具有以下的可選鍵值:

configurable這個指的是描述,當屬性的configurable的值為true的時候,該屬性的描述符才可以改變,同時該屬性可以從對象上被刪除,默認值是false

enumerable這個指的是枚舉,當屬性的enumerable的值為true的時候,該屬性才能出現在對象的枚舉屬性中,默認也為false。

數據描述符具有以下的可選鍵值;

value:該屬性對應的值,可以是任何有效的js值(數值,對象,函數····),默認是undefined;
writable:當且僅當writable的值為true的時候,value的值才能被賦值運算符所改變,默認值是false;

存取描述符具有以下的可選鍵值;
get:一個給屬性提供getter的方法,如果沒有getter則為undefined,當訪問該屬性的時候,該方法會被執行,方法執行的時候沒有參數傳入(括號中沒有內容),但是會傳入this對象(由於繼承關系,這裏的this並不一定是定義該屬性的對象)默認值是undefined
set:一個給屬性提供setter的方法,如果沒有setter則為undefined 當屬性值被修改的時候,該方法會被觸發,該方法接受唯一的參數就是屬性的新的參數值 默認是undefined
https://www.jianshu.com/p/19529527df80

理解JavaScript中的屬性描述符