2022-04-27

1.定義:該方法是在對(duì)象上定義一個(gè)新屬性,或者修改一個(gè)對(duì)象的現(xiàn)有屬性,并返回此對(duì)象。監(jiān)聽(tīng)對(duì)象下的某一個(gè)屬性,做數(shù)據(jù)劫持處理。

2.語(yǔ)法:Object.defineProperty(obj, prop, descriptor)

(1) 參一:要定義屬性的對(duì)象。

(2) 參二:要定義或修改的屬性的名稱(chēng)或 Symbol (被監(jiān)聽(tīng)的屬性)。

(3) 參三:要定義或修改的屬性描述符(存取描述符:options{getter,setter})。

(4) 返回值:被傳遞給函數(shù)的對(duì)象。

let params = {

? ? _name:'zhangsan'

}

Object.defineProperty(params,'name',{

? ? get(){

? ? ? ? console.log(5456);

? ? ? ? return '用戶(hù)名:'+this._name

? ? },

? ? set(val){

? ? ? ? this._name = val

? ? }

})

params.name = 'lisi'

document.write(params.name);// 用戶(hù)名:lisi

let obj = {

? ? _name:'zhangsan',

? ? _age:30

}

Object.defineProperties(obj,{

? ? name:{

? ? ? ? // configurable是否可以被delete刪除,默認(rèn)為true

? ? ? ? configurable:false,

? ? ? ? // writable是否可以被修改,默認(rèn)為true,不可以和set同時(shí)存在

? ? ? ? writable:false,

? ? ? ? // enumerable是否可以被for in 循環(huán),默認(rèn)為true

? ? ? ? enumerable:false

? ? },

? ? age:{

? ? ? ? // configurable:false,

? ? ? ? // writable:false,

? ? ? ? // enumerable:false

? ? ? ? get(){

? ? ? ? ? ? return 'age:'+this._age

? ? ? ? },

? ? ? ? set(val){

? ? ? ? ? ? this._age = val

? ? ? ? }

? ? }

})

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容