获取所有属性名称

Qwertiy

在以下代码中,我的true意思someMagic是,属性obj至少在Chrome和Firefox中是自己的属性

但是,当我尝试通过getOwnPropertyNames返回的数组获取完整的属性列表时,两种浏览器均不包含该列表在chrome中,我收到单个属性,constructor而在FF中,结果是一个空数组。为什么?

是否可以获取所有名称?

var obj = Object.getPrototypeOf(Object.getPrototypeOf(window))
console.log(obj.hasOwnProperty('someMagic'))
console.log(Object.getOwnPropertyNames(obj))
<div id="someMagic"></div>

大卫784

就像@Bergi在他的评论中说的那样,该window对象由称为WindowProxy的东西包装就像他说的那样:异国情调,类似代理人(古怪而神奇:-)。规格中的更多细节:

WindowProxy是一个奇异的对象,它包装Window普通对象,从而将大多数操作间接传递给包装的对象。每个浏览上下文都有一个关联的WindowProxy对象。浏览浏览上下文时,由浏览上下文的关联WindowProxy对象包装的Window对象将更改。

WindowProxy奇异对象必须使用普通的内部方法,除非在下面另行明确指定。

关于使用普通内部方法“除非明确指定的地方”的最后一部分是关键。

EcmaScript 262标准中,它指定hasOwnProperty使用GetOwnPropertygetOwnPropertyNames使用OwnPropertyKeys请注意,这两个都在中被覆盖WindowProxy

7.4.5 [[GetOwnProperty]](P)

7.4.10 [[OwnPropertyKeys]]()

因此,您在上面使用的两个属性都使用了覆盖的非常规方法,而不是“常规内部方法”。因此,他们给出了不寻常的结果。在下7.4.5 GetOwnProperty甚至还有一个警告,警告“故意违反”规范:

这故意违反了JavaScript规范的基本内部方法不变,以保持与现有Web内容的兼容性。有关更多信息,请参见tc39 / ecma262问题#672。[JAVASCRIPT]

这个StackOverflow答案提供了更多有关这种奇怪行为如何成为HTML5标准一部分的历史

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用包名称获取所有活动

来自分类Dev

Linux获取所有网络接口名称

来自分类Dev

jQuery获取与数据属性名称匹配的所有元素

来自分类Dev

通过单个命令获取所有SVN属性名称和值

来自分类Dev

获取具有相同名称的所有属性

来自分类Dev

获取具有“名称”属性的XML元素的标签名称

来自分类Dev

如何从KendoGrid获取所有列名称?

来自分类Dev

获取我所有朋友的所有Facebook ID /名称

来自分类Dev

获取控件的所有依赖项属性

来自分类Dev

MAYA中的PYTHON:获取所有属性

来自分类Dev

如何从名称空间获取所有密钥?

来自分类Dev

WordPress获取所有属性和值

来自分类Dev

如何从“ pyspark.sql.types.Row”中获取所有列/属性名称?

来自分类Dev

从html字典属性获取所有值

来自分类Dev

从具有相同名称的节点获取所有属性

来自分类Dev

如何从JSON列获取所有不同的属性名称?

来自分类Dev

如何使用xmllint xpath获取具有相同标签名称的所有属性

来自分类Dev

获取Awkward数组中不同级别上具有通用名称的所有属性

来自分类Dev

从名称空间获取所有配置

来自分类Dev

jQuery获取与数据属性名称匹配的所有元素

来自分类Dev

如何仅在类中获取所有属性名称

来自分类Dev

如何获取所有节点的名称和xml中xml的属性?

来自分类Dev

获取linq中某个属性名称的所有值?

来自分类Dev

大写所有XML属性名称

来自分类Dev

获取所有 cookie 的名称和值

来自分类Dev

从 C# 中的类中获取所有属性名称

来自分类Dev

从所有产品中获取 Woocommerce 中特定产品属性的术语名称数组

来自分类Dev

Xpath - 如何获取兄弟姐妹的所有现有属性名称

来自分类Dev

使用python 获取vnet 的所有属性| 列表函数只给出名称

Related 相关文章

  1. 1

    使用包名称获取所有活动

  2. 2

    Linux获取所有网络接口名称

  3. 3

    jQuery获取与数据属性名称匹配的所有元素

  4. 4

    通过单个命令获取所有SVN属性名称和值

  5. 5

    获取具有相同名称的所有属性

  6. 6

    获取具有“名称”属性的XML元素的标签名称

  7. 7

    如何从KendoGrid获取所有列名称?

  8. 8

    获取我所有朋友的所有Facebook ID /名称

  9. 9

    获取控件的所有依赖项属性

  10. 10

    MAYA中的PYTHON:获取所有属性

  11. 11

    如何从名称空间获取所有密钥?

  12. 12

    WordPress获取所有属性和值

  13. 13

    如何从“ pyspark.sql.types.Row”中获取所有列/属性名称?

  14. 14

    从html字典属性获取所有值

  15. 15

    从具有相同名称的节点获取所有属性

  16. 16

    如何从JSON列获取所有不同的属性名称?

  17. 17

    如何使用xmllint xpath获取具有相同标签名称的所有属性

  18. 18

    获取Awkward数组中不同级别上具有通用名称的所有属性

  19. 19

    从名称空间获取所有配置

  20. 20

    jQuery获取与数据属性名称匹配的所有元素

  21. 21

    如何仅在类中获取所有属性名称

  22. 22

    如何获取所有节点的名称和xml中xml的属性?

  23. 23

    获取linq中某个属性名称的所有值?

  24. 24

    大写所有XML属性名称

  25. 25

    获取所有 cookie 的名称和值

  26. 26

    从 C# 中的类中获取所有属性名称

  27. 27

    从所有产品中获取 Woocommerce 中特定产品属性的术语名称数组

  28. 28

    Xpath - 如何获取兄弟姐妹的所有现有属性名称

  29. 29

    使用python 获取vnet 的所有属性| 列表函数只给出名称

热门标签

归档