拥有这样的对象:
var a = {
b: "string",
c: function(){
return "i return a string";
}
}
否则
for (var key in a) {
console.log(typeof key);
};
返回“string”,“string”,因为b是一个字符串,c返回一个字符串。
是否存在返回c - >的功能;功能
答案 0 :(得分:3)
如果要查看属性的类型而不是其键,请将该值与typeof
运算符一起使用。
for (var key in a) {
console.log(typeof a[key] );
};
答案 1 :(得分:3)
返回“string”,“string”,因为b是一个字符串,c返回一个字符串。
否即可。它返回string
的原因是属性名称b
和属性名称c
都是字符串;你正在迭代对象的键,而不是现在的值。
你可以引入属性d
,这是一个返回数字或布尔值的函数,你仍然会得到string
。
相反,枚举值本身;
for (var x in a) {
console.log(typeof a[x] );
};
答案 2 :(得分:2)
基本上,您将始终通过通过对象的迭代来获得字符串,因为它们就是这样表示的。
但是如果你做例如console.log(typeof a[key]);
那么你将得到预期的输出。
答案 3 :(得分:1)
更改为:
for (var key in a) {
console.log(typeof a[key]);
};
console.log(typeof key); // gives you the key - "c"
console.log(typeof a[key]); // gives you the value of the "c" key - function.
答案 4 :(得分:1)
让我解释一下,所以对任何人都很容易理解。 (无论如何,这是我的第一篇文章。)
尝试以下代码,它表示功能。
console.log(typeof(a.c))
但你所写的是阅读属性名称。请尝试以下代码来了解代码的错误。
for (var key in a) {
console.log(key);
};
所以基本上你得到的是正确的。因为所有属性名称都是字符串。 记住JSON对象有几个限制,例如区分大小写,遍历属性所需的完整路径等。
按如下所示更改代码以获取属性的类型
解决方案1:
console.log(typeof(a[key]));
解决方案2:
console.log(typeof(eval('a.'+ key)));