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