javascript对象的3个属性特征
source link: https://foofish.net/object-property-feature.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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属性重新赋值为女
,但是它的值还是原来的男
,可通过类似的操作配置属性的可枚举和可配置特性。
有问题可以扫描二维码和我交流
关注公众号「Python之禅」,回复「1024」免费获取Python资源
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK