1

javascript对象的3个属性特征

 2 years ago
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.
neoserver,ios ssh client

对象属性特征.png

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属性的writablefalse, 则可通过 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资源

python之禅

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK