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

Javascript 属性描述符对象存储在哪里?,javascript,javascript-objects,propertydescriptor,Javascript,Javascript Objects,Propertydescriptor,我知道您可以获得属性描述符对象 某个对象的某个属性“prop”的 Object.getOwnPropertyDescriptor(obj,“prop”)。 我只是想知道:这些东西存储在哪里? 它们是存储在对象内部还是。。。。在别处 我试图在开发工具中找到它们,但没有成功 除非明确请求,否则属性描述符对象不存在。它们是在您创建时临时创建的。 因此,以下代码: var foo = {bar:'foo'} Object.getOwnPropertyDescriptor(foo, 'bar') ===

我知道您可以获得属性描述符对象 某个对象的某个属性“
prop
”的
Object.getOwnPropertyDescriptor(obj,“prop”)。
我只是想知道:这些东西存储在哪里?
它们是存储在对象内部还是。。。。在别处

我试图在开发工具中找到它们,但没有成功

除非明确请求,否则属性描述符对象不存在。它们是在您创建时临时创建的。 因此,以下代码:

var foo = {bar:'foo'}
Object.getOwnPropertyDescriptor(foo, 'bar') === Object.getOwnPropertyDescriptor(foo, 'bar');
总是评估为false

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

那么
可写
可配置
获取
设置在哪里呢。。。储存的烟蒂?规范不要求它们暴露于用户代码中…-似乎每个属性都占用一个字节

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

从我对规范的阅读中,调用了这个函数,它从一堆不同的
[[internalproperties]]]
中建立返回。这些属性不必向最终运行时公开,但某些实现可能使它们可用,例如在开发工具中。您的相似性可能会有所不同……它们存储在任何特定实现选择存储它们的地方,或者更可能的是,它们是在请求时构建的。但是,与另一个对象相比,任何对象都不会返回false吗?例如,
[1,2,3]==[1,2,3]
也是
false
对象通过引用(“它是相同的对象”),而不是通过值(“它是相同的对象”)进行比较。例如,
var a={},b=a;a===b;//正确