使用forEach枚举属性和值

时间:2015-12-05 09:27:02

标签: javascript

以下代码未列举属性&网页上Array构造函数的值。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script>
            window.onload = myfunc;
            function myfunc(){
                window['Object']['getOwnPropertyNames'] (window['Array'])['forEach'](function(val){
                    document.write(val + ": " + Array[val] + "<br />" );
                });
            }
        }
        </script>
    </head>
    <body>

    </body>
</html>

传递给forEach的参数有什么问题吗?

3 个答案:

答案 0 :(得分:3)

没有参数没问题,你有一个额外的}结束括号。

window.onload = myfunc;
            function myfunc(){
                var x = "";
                window['Object']['getOwnPropertyNames'] (window['Array'])['forEach'](function(val){
                    x += val + ": " + Array[val] + "<br />" ;
                });
                document.write(x);
            }

我希望你知道document.write将取代整个文件。此外,我在变量x中添加了您想要打印的内容,您可以使用此x来显示输出。

答案 1 :(得分:1)

使用Object.getOwnPropertyNames(Array);会更好

但如果想坚持你的方法那么:

 window['Object']['getOwnPropertyNames'] (window['Array'])['forEach'](function(val){
                  console.log(val);
                });

你有一个额外的}

答案 2 :(得分:0)

  1. 您的代码中还有一个额外的大括号,当您修复代码缩进时,您可以更轻松地看到它:

        }
    </script>
    
  2. 您可以直接使用窗口对象,不需要window['propertyName']

    window['Object']['getOwnPropertyNames'](...)
    // is the same as
    Object.getOwnPropertyNames(...)
    
  3. 您可能希望使用.forEach为返回的结果调用方法,而不是['forEach']

    Object.getOwnPropertyNames(window).forEach(function (propName) {
        console.log('In global window scope: ', propName);
    });