应为Javascript字符串而不是对象

应为Javascript字符串而不是对象,javascript,string,object,Javascript,String,Object,它不应该返回对象吗?如何解决此问题?如果您输出道具本身,您将看到它们是键:“a”、“b”。返回属性名称。将最后一行更改为 var x = {}; x.a = {y:5}; x.b = {z:6}; for (prop in x) console.log(typeof prop); // returns "string". Why not "object"? x[prop]部分采用名为prop(类型为string)的属性名称,并返回属性x.prop,对于a和b,该属性将返回object。所有这

它不应该返回对象吗?如何解决此问题?

如果您输出道具本身,您将看到它们是键:“a”、“b”。

返回属性名称。

将最后一行更改为

var x = {};
x.a = {y:5};
x.b = {z:6};

for (prop in x) console.log(typeof prop); // returns "string". Why not "object"?

x[prop]
部分采用名为
prop
(类型为string)的属性名称,并返回属性
x.prop
,对于a和b,该属性将返回object。

所有这些响应都是正确的,但通过一个更正的示例,您可能会更好地看到它:

for (prop in x) console.log(typeof x[prop]);

你应该看看
prop
是什么:阅读怎么样?循环中
prop
得到的值是字符串“a”,然后是字符串“b”。对,但是为什么当“a”是对象时它会得到字符串呢?@user1019031:
“a”
不是对象,而是字符串
x.a
(或
x[“a”]
)是一个对象。看看我在评论中链接到的文档。啊,明白了,谢谢!这正是我所需要的。
var x = {};
x.a = {y:5};
x.b = {z:6};

for (prop in x) console.log(typeof prop); // returns "string"
for (prop in x) console.log(prop); // returns "a", then "b"
for (prop in x) console.log(typeof x[prop]); // returns "object"
for (prop in x) console.log(x[prop]); // returns {y:5}, then {z:6}