在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ Object.defineProperty()屬性描述符的默認(rèn)值?

Object.defineProperty()屬性描述符的默認(rèn)值?

《JS高程第三版》第六章關(guān)于對(duì)象屬性那部分,提到的屬性的幾個(gè)特征,無(wú)論是數(shù)據(jù)屬性還是訪問器屬性,他們的默認(rèn)值都是true
比如
[[configurable]][[enumerable]]等等這些的默認(rèn)值書上寫的是true
但是 在MDN上面的說法卻是false 所以
我有點(diǎn)暈
MDN:
https://developer.mozilla.org...

回答
編輯回答
忘了我

MDN :

如果對(duì)象中不存在指定的屬性,Object.defineProperty()就創(chuàng)建這個(gè)屬性。當(dāng)描述符中省略某些字段時(shí),這些字段將使用它們的默認(rèn)值。擁有布爾值的字段的默認(rèn)值都是false。

意思是,如果你通過Object.defineProperty()創(chuàng)建新屬性,省略描述符的某些字段,如果值為布爾型,則為 false;

Reflect.getOwnPropertyDescriptor(Object.defineProperty({}, 'key', {value:1}),'key')//{value: 1, writable: false, enumerable: false, configurable: false}

如果你不通過 Object.defineProperty() 創(chuàng)建新的屬性,而是通過對(duì)象字面量創(chuàng)建屬性,默認(rèn)值為 true ,高程說的沒問題;

Reflect.getOwnPropertyDescriptor({key:1},'key')//{value: 1, writable: true, enumerable: true, configurable: true}
let o={};
o.key=1;
Reflect.getOwnPropertyDescriptor(o,'key')//同上

另外,底層操作現(xiàn)在可以轉(zhuǎn)移到 Reflect 對(duì)象上來操作;

2017年8月11日 13:54
編輯回答
亮瞎她

你這個(gè)MDN的文檔,是講Object.defineProperty的api,默認(rèn)為false。
比如

var obj = {};
Object.defineProperty(obj, 'a', { value: 20 });
obj.value; // 20
obj.value = 15;
obj.value; // 20
Object.keys(obj); // []

使用這個(gè)api,沒有configurable和enumerable時(shí),這兩個(gè)參數(shù)默認(rèn)值是false。
而高程上面講的是一個(gè)對(duì)象屬性的默認(rèn)值,類似于這種。

var obj = {
  a: 20,
};

這個(gè)a屬性是可枚舉的可修改的

2017年10月29日 02:46