javascript對象3個屬性特征
對象特征:
1、writable:可寫
writable
表示是否可以設置屬性的值
let obj = {age:10} obj.age = 1 // 給屬性重新賦值 console.log(obj.age) //1
2、enumerable:可枚舉
enumerable
特性指是否可以在 for/in
循環中返回屬性名字,默認自有屬性和繼承屬性都可以枚舉
let obj = {name:"zhang", age:20, sex:"男"} let newObj = Object.create(obj) newObj.height = 200 for(p in newObj){ console.log(p,"->", newObj[p]) }
輸出:
height -> 200
name -> zhang
age -> 20
sex -> 男
3、configurable:可配置
configurable
表示是否可通過delete
刪除屬性
let obj = {name:"jim"} delete obj.name // 刪除後該屬性將不存在 console.log(obj.name) //undefined
對象中的自有屬性上面3個特性默認都是 true 。如果要修改這些特征的默認值,可以使用 Object.defineProperty()
方法。defineProperty
接收3個參數, 對象、要修改的屬性名、特征值對象。
例如:如果要設置 sex 屬性的 writable 為 false , 則可通過 defineProperty()方法來操作
let obj = {name:"zhang", age:20, sex:"男"} Object.defineProperty(obj, "sex", {writable:false}) obj.sex = "女" console.log(obj.sex) // 男
設置為writable
為false
後,即使給sex屬性重新賦值為 女 ,但是它的值還是原來的 男 ,可通過類似的操作配置屬性的可枚舉和可配置特性。
到此這篇關於javascript對象3個屬性特征的文章就介紹到這瞭,更多相關javascript對象屬性特征內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 關於vue中使用three.js報錯的解決方法
- JavaScript Object.defineProperty與proxy代理模式的使用詳細分析
- 詳細談談JavaScript中循環之間的差異
- 一文讀懂JavaScript 中的延遲加載屬性模式
- vue.js數據響應式原理解析