我知道您prop
可以obj
使用
Object.getOwnPropertyDescriptor(obj,"prop");
. 我只是想知道:这些对象存储在哪里?它们是存储在对象内部还是....其他地方?我试图在开发人员工具中找到它们,但没有运气。
问问题
290 次
1 回答
1
除非明确请求,否则属性描述符对象不存在。它们是在您调用Object.getOwnPropertyDescriptor
时临时创建的。所以下面的代码:
var foo = {bar:'foo'}
Object.getOwnPropertyDescriptor(foo, 'bar') === Object.getOwnPropertyDescriptor(foo, 'bar');
总是评估为假。
所以正如我们所看到的(代码和规范),属性描述符对象不是存储的,而是按需创建的。
那么writable
, configurable
, value
, get
, set
... 属性存储在哪里?规范不要求它们暴露给用户代码...这是 V8 PropertyDescriptor 类的 C++ 定义- 似乎每个属性都占用一个字节。
如果您想检查属性是否可写、可配置或类似,Firefox 控制台允许您这样做(但仅当属性不可写或具有 getter/setter 时):
于 2016-01-04T13:17:23.500 回答