Object.defineproperty方法示例詳解
Object.defineproperty 的作用就是直接在一個對象上定義一個新屬性,或者修改一個已經(jīng)存在的屬性
Object.defineproperty可以接收三個參數(shù)
Object.defineproperty(obj, prop, desc)
obj : 第一個參數(shù)就是要在哪個對象身上添加或者修改屬性
prop : 第二個參數(shù)就是添加或修改的屬性名
desc : 配置項,一般是一個對象
來一個簡單的例子
let person = {
name:"碼農(nóng)",
age: 18
}
Object.defineProperty(person,'sex',{
value:"男"
})
console.log(person)
這不就是添加了
第三個參數(shù)里面還有6個配置控住屬性
writable: 是否可重寫
value: 當(dāng)前值
get: 讀取時內(nèi)部調(diào)用的函數(shù)
set: 寫入時內(nèi)部調(diào)用的函數(shù)
enumerable: 是否可以遍歷
configurable: 是否可再次修改配置項 let person = {
name:"碼農(nóng)",
age: 18
}
Object.defineProperty(person,'sex',{
value:"男", //設(shè)置屬性值
enumerable:true, //控制屬性是否可以枚舉,默認(rèn)值是false
writable:true, //控制屬性是否可以被修改,默認(rèn)值是false
configurable:true //控制屬性是否可以被刪除,默認(rèn)值是false
})
console.log(person)
- writable:true 控制屬性是否可以被修改,控制臺也看的當(dāng)為TRUE的時候?qū)傩灾悼梢员恍薷?/li>
- configurable:true 控制屬性是否可以被刪除
- enumerable:true 控制屬性是否可以枚舉,true的話簡單的說就是可以遍歷獲取該值
還有最重要的兩個屬性 set和get(即存取器描述:定義屬性如何被存取),這兩個屬性是干嘛的?
注意:當(dāng)使用了getter或setter方法,不允許使用writable和value這兩個屬性(如果使用,會直接報錯滴)
get 是獲取值的時候的方法,類型為 function ,獲取值的時候會被調(diào)用,不設(shè)置時為undefined
set 是設(shè)置值的時候的方法,類型為 function ,設(shè)置值的時候會被調(diào)用,undefined
get或set不是必須成對出現(xiàn),任寫其一就可以
代碼來看看
let number = 18
let person = {
name:'碼農(nóng)',
sex:'男',
}
Object.defineProperty(person,'age',{
//當(dāng)有人讀取person的age屬性時,get函數(shù)(getter)就會被調(diào)用,且返回值就是age的值
get(){
console.log('有人讀取age屬性了')
return number
},
//當(dāng)有人修改person的age屬性時,set函數(shù)(setter)就會被調(diào)用,且會收到修改的具體值
set(value){
console.log('有人修改了age屬性,且值是',value)
number = value
}
})
console.log(person)
get:當(dāng)有人讀取person的age屬性時,get函數(shù)(getter)就會被調(diào)用,且返回值就是age的值
set:當(dāng)有人修改person的age屬性時,set函數(shù)(setter)就會被調(diào)用,且會收到修改的具體值
可以實現(xiàn)一個數(shù)據(jù)的聯(lián)動效果
到此這篇關(guān)于Object.defineproperty方法的文章就介紹到這了,更多相關(guān)Object.defineproperty方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
小程序開發(fā)中如何使用async-await并封裝公共異步請求的方法
在平常的項目開發(fā)中肯定會遇到同步異步執(zhí)行的問題,這篇文章主要介紹了小程序開發(fā)中如何使用async-await并封裝公共異步請求的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
Java?Script網(wǎng)頁設(shè)計案例詳解
下面我將提供一個簡單的JavaScript網(wǎng)頁設(shè)計案例,該案例將實現(xiàn)一個動態(tài)的待辦事項列表(Todo List),用戶可以在頁面上添加新的待辦事項,標(biāo)記它們?yōu)橐淹瓿?以及刪除它們,這篇文章主要介紹了Java?Script網(wǎng)頁設(shè)計案例,需要的朋友可以參考下2024-08-08
javascript中動態(tài)函數(shù)用法實例分析
這篇文章主要介紹了javascript中動態(tài)函數(shù)用法,實例分析了動態(tài)函數(shù)的定義方法與使用技巧,需要的朋友可以參考下2015-05-05
select隱藏選中值對應(yīng)的id,顯示其它id的簡單實現(xiàn)方法
下面小編就為大家?guī)硪黄猻elect隱藏選中值對應(yīng)的id,顯示其它id的簡單實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
兼容Firefox的Javascript XSLT 處理XML文件
這篇文章主要介紹了兼容Firefox的Javascript XSLT 處理XML文件,需要的朋友可以參考下2014-12-12

