前端 - JavaScript中,我用for in可以遍历到一个函数的静态方法,而用forEach不能,有哪位大神知道这是为什么呢
黄舟
黄舟 2017-04-10 15:23:45
[JavaScript讨论组]

如图:

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
怪我咯

for...in 会遍历对象自身和其原型链上所有可枚举的成员(属性和方法)。

forEach的说明如下:

The forEach() method executes a provided function once per array element.

forEach仅遍历数组元素,即那些可以通过索引访问到的元素。

另外可以通过break来终止for...in,但没有办法终止forEach。


补充下:

要让Array.prototype.forEach在object上调用,需要该对象具有length属性,于是forEach会执行类似的行为:(参考ES5 Spec)

var i = 0;
while(i++ < length) {
  if(obj.[[hasProperty]](i.toString()))
    callback.call(...)
}

所以Array.prototype.forEach可以应用在Argument对象或者是HTMLCollection对象上.

高洛峰

for in 会遍历自身及其原型链上的所有方法。

有个东西你得知道,叫做hasOwnProperty,它可以将不是自己的变量或函数过滤掉

最后,建议不要使用for in , 第一是效率很低,第二是如果自己不注意,容易遍历出自己想不到的东西。

伊谢尔伦

js没有foreach这个方法,for就带foreach的功能

ringa_lee

forEach = for
for != for in

so
forEach != for in

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号