Javascript 为什么这个变量不是对象?

Javascript 为什么这个变量不是对象?,javascript,Javascript,我有以下目标 fooBars = { foo: { propA: 1, propB: 2 }, bar: { propA: 3, propB: 4 } }; 我需要遍历它,并将每个子对象的属性与其他变量进行比较。 我想检查对象是否具有该属性,但它不工作。我尝试使用一些console.log来理解并获得如下信息: for (fooBar in fooBars) { if (fooBars.ha

我有以下目标

fooBars = {
    foo: {
        propA: 1,
        propB: 2
    },
    bar: {
        propA: 3,
        propB: 4
    }
};
我需要遍历它,并将每个子对象的属性与其他变量进行比较。 我想检查对象是否具有该属性,但它不工作。我尝试使用一些
console.log
来理解并获得如下信息:

for (fooBar in fooBars) {
    if (fooBars.hasOwnProperty(fooBar)) {
        console.log(fooBar);                         //Display 'foo' then 'bar'
        console.log(fooBar.hasOwnProperty('propA')); //Display 'false' 
        console.log(fooBar.propA);                   //Display undefined
    }
}


我的代码有什么问题?为什么我不能将
fooBar
作为对象,但我仍然可以访问他的属性?

我认为您应该正确地修复代码。什么是foobbar、foodBar和foobar?这些都是混乱的

但是在本声明中,“for(foodBar中的foodBar)”


“foodBar”表示变量的名称。不是精确的变量本身。这就是java和js之间的区别。

因为
fooBar
不是对象,它只是
fooBars
对象中(一个)属性的(
string
)名称。当您获得表示某个对象中属性名称的
string
值时,您可以使用(在您的情况下)
fooBars[fooBar]

试一试


如果您不相信我,只需键入
console.log(typeof(fooBar))fooBar
的类型确实是
string
:)

foodBar in…
?打字错误?
foodBar
<代码>fooBar
<代码>食物条<代码>食物栏?下定决心。如果所有打字错误都已纠正,那么第三行将记录未定义的
。看见这个问题可能与打字错误有关。对不起,我还没醒过来。。。我更新了问题并添加了一把小提琴。你是对的,我的对象名乱七八糟,这就是我得到属性的原因。我修好了谢谢!不是函数,而是运算符。
 console.log(fooBars[fooBar].hasOwnProperty('propA')); //Display 'true' 
 console.log(fooBars[fooBar].propA);                   //Display 1 then 3