我想使用具有自定义属性的属性描述符定义一个javascript属性,换句话说,除了标准"值","可写"等属性之外......例如我在下面定义了一个属性属性具有自定义属性"customAttr"的描述符.对Object.defineProperty的调用工作正常,但后来当我尝试循环遍历属性描述符的属性时,我的自定义属性未列出.我正在尝试做什么?谢谢
const o = {}
Object.defineProperty(o, 'newDataProperty', {
value: 101,
writable: true,
enumerable: true,
configurable: true,
customAttr: 1,
})
const desc = Object.getOwnPropertyDescriptor(o, 'newDataProperty')
// List the descriptor attributes.
for (const prop in desc) {
console.log(`${prop}: ${desc[prop]}`)
}
// PROBLEM: `customAttr` is not listedRun Code Online (Sandbox Code Playgroud)
不,这是不可能的.这是做什么的Object.defineProperty:
...
3.让desc成为
ToPropertyDescriptor使用Attributes作为参数调用的结果.4. 使用参数name,desc和true 调用O的[[DefineOwnProperty]]内部方法.
5.返回Ø.
简而言之,ToPropertyDescriptor简单地忽略任何不"可枚举","可写","可配置","值","获取"或"设置"的内容:
...
设desc是创建一个最初没有字段的新属性描述符的结果.
- 如果调用参数" " 的Obj的[[HasProperty]]内部方法的结果
enumerable为真,那么
- ...
(对其他有效描述符属性重复步骤3)
10.返回desc.
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |