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;//正确