Javascript区分对象中的函数
有这样一个物体:Javascript区分对象中的函数,javascript,object,typeof,Javascript,Object,Typeof,有这样一个物体: var a = { b: "string", c: function(){ return "i return a string"; } } 做 返回“string”,“string”,因为b是字符串,c返回字符串 是否有返回c->function的函数?如果要查看属性的类型而不是其键,应将该值与typeof运算符一起使用 for (var key in a) { console.log(typeof a[key] ); }; 基本上,
var a = {
b: "string",
c: function(){
return "i return a string";
}
}
做
返回“string”,“string”,因为b是字符串,c返回字符串
是否有返回c->function的函数?如果要查看属性的类型而不是其键,应将该值与
typeof
运算符一起使用
for (var key in a) {
console.log(typeof a[key] );
};
基本上,通过对象的键进行迭代,始终可以得到字符串,因为它们是这样表示的 但是,如果您执行
console.log(键入一个[key])代码>然后您将获得预期的输出。更改为:
for (var key in a) {
console.log(typeof a[key]);
};
返回“string”,“string”,因为b是字符串,c返回字符串
否。它返回string
的原因是属性名b
和属性名c
都是字符串;您现在正在迭代对象的键,而不是它们的值
您可以引入属性d
,这是一个返回数字或布尔值的函数,您仍然可以得到string
相反,列举价值观本身
for (var x in a) {
console.log(typeof a[x] );
};
让我来解释一下,这样大家都很容易理解。(无论如何,这是我在这里的第一篇帖子。)
试试下面的代码,它说这是一个函数
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)));
我认为最好避免使用eval,而是使用[钥匙],无论如何,谢谢!
console.log(typeof(a[key]));
console.log(typeof(eval('a.'+ key)));