JavaScript属性枚举不起作用

时间:2014-11-17 11:55:53

标签: javascript

我写了一个小脚本来了解属性枚举在JavaScript中是如何工作的:

<html>
<body>
<script>

function enum_properties(obj) {
    var p;
    for (p in obj) {
        if (typeof p !== 'function') {
            document.write(p + " : " + obj[p] + "<br/>");
        }
    }
}

obj1 = {
    'first_name': 'Annie',
    'last_name' : 'Leonhardt',
    'age'       : 23,
    'f'         : function() {
                    document.write("f()!");
                  }
};

enum_properties(obj1);
console.log(typeof obj1.f); //outputs 'function'

</script>
</body>
</html>

正如最后一行脚本的对象所揭示的那样,f确实是一个函数,但我的函数仍然没有拒绝它。我做错了什么?

1 个答案:

答案 0 :(得分:5)

您正在检查属性名称的类型(显然是字符串),而不是其值。

for (p in obj) {
        if (typeof obj[p] !== 'function') {
            document.write(p + " : " + obj[p] + "<br/>");
        }
    }