javascript - 关于defineProperty的value

查看:136
本文介绍了javascript - 关于defineProperty的value的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

> var a = {}
> Object.defineProperty(a, "b", {
... value: 110})
{}
> a
{}
> a.b
110
> a.b = 555
555
> a.b
110

> var aa = {b: 1}
undefined
> Object.defineProperty(aa, "b", {
... value: 119})
{ b: 119 }
> aa.b
119
> aa.b = 1
1
> aa.b
1

为什么aa.b可更改,a.b不能?

解决方案

属性描述符有三个属性分别是 configurable enumerable writable,默认值均为 false
而使用对象字面量定义的属性描述符均为 true,可以通过 Object.getOwnPropertyDescriptor(a, 'b')Object.getOwnPropertyDescriptor(aa, 'b') 来获取两个属性的描述符。

所以 a.b 不可修改,aa.b 可以修改。

这篇关于javascript - 关于defineProperty的value的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆