1: 给对象属性设置属性描述符, 设置数据描述符或者存取描述符,只会启用其中一种
2:
3: get方法没有效果了.
属性分两种:
数据属性:描述是 Configurable, Enumerable, Writable, Value
访问器属性:描述是 Configurable, Enumerable, Get, Set
我理解第二次相当于把 b 定义成数据属性了,所以没有 get 和 set
对象里目前存在的属性描述符有两种主要形式:数据描述符和存取描述符。数据描述符是一个拥有可写或不可写值的属性。存取描述符是由一对 getter-setter 函数功能来描述的属性。描述符必须是两种形式之一;不能同时是两者。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
JS的数据描述符和存取描述符只能选取一种规则。
ToPropertyDescriptor规范定义部分如下:
以上说明如果在使用defineProperty方法的时候,如果同时定义了这两种描述符,会报错,测试截图如下:
另外,如果使用一种描述符定义属性后,再使用另一种属性描述符重新定义也是可以的,只不过两种描述符不共有的描述符会重置为默认值。

ValidateAndApplyPropertyDescriptor规范定义部分如下:
测试截图如下: