属性描述符对象存储在哪里?

时间:2015-11-24 09:06:28

标签: javascript javascript-objects propertydescriptor

我知道您可以获取属性描述符对象 某个对象prop的某个属性“obj”的属性 Object.getOwnPropertyDescriptor(obj,"prop");。 我只是想知道:这些物品存放在哪里? 它们是在内部存储在一个对象中还是......在其他地方 我试图在开发人员工具中找到它们,但没有运气。

1 个答案:

答案 0 :(得分:1)

除非明确请求,否则属性描述符对象不存在。它们是call Object.getOwnPropertyDescriptor时临时创建的。 所以下面的代码:

var foo = {bar:'foo'}
Object.getOwnPropertyDescriptor(foo, 'bar') === Object.getOwnPropertyDescriptor(foo, 'bar');

总是评估为假。

正如我们所看到的(代码和规范),属性描述符对象不是存储的,而是按需创建的。

那么writableconfigurablevaluegetset ......存储的是什么?规范并不要求它们暴露给用户代码...... Here is C++ definition for V8 PropertyDescriptor class - 似乎每个属性占用一个字节。

如果您想检查属性是否可写,可配置或类似,Firefox控制台允许您这样做(但仅当属性不可写或具有getter / setter时): Firefox DevTools

相关问题