首先介紹一下這個(gè)方法
Object.defineProperty(obj,prop,descriptor)
obj:需要被操作的目標(biāo)對(duì)象
prop:目標(biāo)對(duì)象需要定義或修改的屬性
descriptor: 修改屬性的描述符
簡(jiǎn)單來(lái)說袱箱,這個(gè)方法允許精確添加或修改對(duì)象的屬性
對(duì)象里目前存在的屬性描述符有兩種主要形式:數(shù)據(jù)描述符和存取描述符。
數(shù)據(jù)描述符:一個(gè)擁有可寫或不可寫值的屬性
存取描述符:由一對(duì)getter-setter函數(shù)功能來(lái)描述的屬性
描述符必須是兩種形式之一踱稍,兩者不能同時(shí)存在
數(shù)據(jù)描述符
- configurable:當(dāng)且僅當(dāng)該屬性的值為true時(shí)配乱,該屬性描述符才能被改變煌集,同時(shí)該屬性也能從對(duì)應(yīng)的對(duì)象上被刪除刺覆。默認(rèn)為false
- enumerable:當(dāng)該屬性的值為true時(shí)节沦,該屬性才能夠被枚舉卖怜,默認(rèn)false
- value:為該屬性的值屎开,可以是任何有效的javascript值(對(duì)象,函數(shù)等)马靠。默認(rèn)undefined
- writable:當(dāng)該值為true時(shí)奄抽,該屬性才能被賦值運(yùn)算符改變。默認(rèn)false
存取描述符
- get:一個(gè)給屬性提供getter的方法,如果沒有則為undefined甩鳄。改方法返回值被用作屬性值逞度。默認(rèn)undefined
- set:屬性的setter方法,接受唯一參數(shù)妙啃,并將該參數(shù)的新值分配給該屬性档泽。默認(rèn)undefined