我写了一个小脚本来了解属性枚举在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
确实是一个函数,但我的函数仍然没有拒绝它。我做错了什么?
答案 0 :(得分:5)
您正在检查属性名称的类型(显然是字符串),而不是其值。
for (p in obj) {
if (typeof obj[p] !== 'function') {
document.write(p + " : " + obj[p] + "<br/>");
}
}