gpt4 book ai didi

javascript - 为什么 for(var i in Math) 不遍历 Math.* 在 Javascript 中?

转载 作者:可可西里 更新时间:2023-11-01 02:32:28 25 4
gpt4 key购买 nike

由于某些原因(数学中的 var i){console.log(i)} 没有在 Javascript 中显示预期的 tan、cos、atan2、E、PI。

最佳答案

因为 Math 是一个内置对象,其属性被标记为不可枚举。许多内置对象都有这种行为,这就是为什么在使用用户函数扩展 Array.prototype 之前,使用 for..in 遍历数组不会给您带来问题,这默认情况下始终是可枚举的。

直到最近,不可枚举 还是一种内部属性,无法通过常规 J​​avascript 代码访问。但是 EMCAScript 5 指定了通过 Object.defineProperty() 设置任何对象属性的可枚举性和可写性(尝试更改 Math.PI 的值)的能力。 .

它还提供Object.getOwnPropertyNames()作为一种获取对象所有属性列表的方法,无论其可枚举性如何。

Object.getOwnPropertyNames(Math);

//returns
["LN10", "PI", "E", "LOG10E", "SQRT2", "LOG2E", "SQRT1_2", "LN2", "cos", "pow", "log", "tan", "sqrt", "ceil", "asin", "abs", "max", "exp", "atan2", "random", "round", "floor", "acos", "atan", "min", "sin"]

据我所知,目前支持这些功能的浏览器只有 Chrome 和 Safari。 Firefox 应该在第 4 版中支持它。我不确定 IE9,但微软表示他们打算最终支持 EMCAScript 5 标准。

如果没有明确的支持,我认为没有任何方法可以在 Javascript 解释器中模拟此功能。

关于javascript - 为什么 for(var i in Math) 不遍历 Math.* 在 Javascript 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com