javascript - 關(guān)于defineProperty的value
問(wèn)題描述
> var a = {}> Object.defineProperty(a, 'b', {... value: 110}){}> a{}> a.b110> a.b = 555555> a.b110> var aa = {b: 1}undefined> Object.defineProperty(aa, 'b', {... value: 119}){ b: 119 }> aa.b119> aa.b = 11> aa.b1
為什么aa.b可更改,a.b不能?
問(wèn)題解答
回答1:屬性描述符有三個(gè)屬性分別是 configurable enumerable writable,默認(rèn)值均為 false而使用對(duì)象字面量定義的屬性描述符均為 true,可以通過(guò) Object.getOwnPropertyDescriptor(a, ’b’) 及 Object.getOwnPropertyDescriptor(aa, ’b’) 來(lái)獲取兩個(gè)屬性的描述符。
所以 a.b 不可修改,aa.b 可以修改。
回答2:因?yàn)槟J(rèn)情況下,通過(guò)Object.defineProperty()定義的屬性的屬性值均為false是不可寫(xiě)的.
a = {}Object.getOwnPropertyDescriptor(a, ’b’)// > undefinedObject.defineProperty(a, 'b', {value: 119})Object.getOwnPropertyDescriptor(a, ’b’)// > Object {value: 119, writable: false, enumerable: false, configurable: false}
而通過(guò)對(duì)象字面量定義的屬性默認(rèn)是可寫(xiě)的,調(diào)用`
aa = { b: 1 }Object.getOwnPropertyDescriptor(aa, ’b’)// > Object {value: 1, writable: true, enumerable: true, configurable: true}
所以aa的b屬性是可寫(xiě)的. 所以O(shè)bject.defineProperty()并不改變屬性的屬性值.所以aa的b的值會(huì)改變.
相關(guān)文章:
1. Python2中code.co_kwonlyargcount的等效寫(xiě)法2. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過(guò)段時(shí)間會(huì)消失是什么情況?3. [python2]local variable referenced before assignment問(wèn)題4. mysql - 如何在有自增id的情況下,讓其他某些字段能不重復(fù)插入5. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?6. mysql - 請(qǐng)問(wèn)數(shù)據(jù)庫(kù)字段為年月日,傳進(jìn)的參數(shù)為月,怎么查詢(xún)那個(gè)月所對(duì)應(yīng)的數(shù)據(jù)7. javascript - 求幫助 , ATOM不顯示界面!!!!8. html - 移動(dòng)端radio無(wú)法選中9. javascript - vue+iview upload傳參失敗 跨域問(wèn)題后臺(tái)已經(jīng)解決 仍然報(bào)403,這是怎么回事啊?10. php - 微信開(kāi)發(fā)驗(yàn)證服務(wù)器有效性
