> 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不能?
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号
属性描述符有三个属性分别是
configurableenumerablewritable,默认值均为false而使用对象字面量定义的属性描述符均为
true,可以通过Object.getOwnPropertyDescriptor(a, 'b')及Object.getOwnPropertyDescriptor(aa, 'b')来获取两个属性的描述符。所以
a.b不可修改,aa.b可以修改。因为默认情况下,通过
Object.defineProperty()定义的属性的属性值均为false是不可写的.而通过对象字面量定义的属性默认是可写的,调用`
所以
aa的b属性是可写的. 所以Object.defineProperty()并不改变属性的属性值.所以aa的b的值会改变.