JS对象属性writable、enumerable、configurable

D: { name: “Lydia”}, [“age”]

答案: B

通过defineProperty方法,我们可以给对象添加一个新属性,或者修改已经存在的属性。而我们使用defineProperty方法给对象添加了一个属性之后,属性默认为 不可枚举(not enumerable). Object.keys方法仅返回对象中 可枚举(enumerable) 的属性,因此只剩下了"name".

用defineProperty方法添加的属性默认不可变。你可以通过writable, configurable 和 enumerable属性来改变这一行为。这样的话, 相比于自己添加的属性,defineProperty方法添加的属性有了更多的控制权。

普通的对象属性对应的属性描述符含有:writable(可写)、enumerable(可枚举)和configurable(可配置)。

1.在使用Object.defineProperty()、Object.defineProperties() 或 Object.create() 函数的情况下添加数据属性,writable、enumerable和configurable默认值为false。

2.使用对象直接量创建的属性,writable、enumerable和configurable特性默认为true。

writable

writable属性是一个布尔值,决定了目标属性的值(value)是否可以被改变。如果原型对象的某个属性的writable为false,那么子对象将无法自定义这个属性。

enumerable

enumerable(可遍历性)返回一个布尔值,表示目标属性在 for…in、Object.keys、JSON.stringify 中是否可遍历。但是可以直接获取它的值。

注意,for…in循环包括继承的属性,Object.keys方法不包括继承的属性。如果需要获取对象自身的所有属性,不管是否可遍历,可以使用Object.getOwnPropertyNames方法。

configurable

configurable(可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。

也就是说,configurable为false时,value、writable、enumerable和configurable都不能被修改了, configurable修改成false是单向操作,无法撤销!以及无法被删除

注意,writable只有在false改为true会报错,true改为false是允许的。

至于value,只要writable和configurable有一个为true,就允许改动。

另外,configurable为false时,直接目标属性赋值,不报错,但不会成功。

[

总结

我在成长过程中也是一路摸爬滚打,没有任何人的指点,所以走的很艰难。例如在大三的时候,如果有个学长可以阶段性的指点一二,如果有已经工作的师兄可以告诉我工作上需要什么,我应该前面的三年可以缩短一半;后来去面试bat,失败了有5、6次,每次也不知道具体是什么原因,都是靠面试回忆去猜测可能是哪方面的问题,回来学习和完善,当你真正去招人的时候,你就会知道面试记录是多么重要,面试官可以从面试记录里看到你的成长,总是去面试,总是没有成长,就会被定义为缺乏潜力。

image
试记录里看到你的成长,总是去面试,总是没有成长,就会被定义为缺乏潜力。

[外链图片转存中…(img-X1aYXjYD-1718714411918)]
image

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值