需要帮助理解Javascript中的哈希吗

需要帮助理解Javascript中的哈希吗,javascript,oop,object,hash,Javascript,Oop,Object,Hash,我真的不明白。谁能给我解释一下吗?这是我的 唯一定义的键是foo。根据定义,继承的成员不是键。因此,在第一行中,您创建了一个从具有getFoo的对象继承而来的对象。此方法getFoo不是继承对象中的键,而是其父对象中的键 在参考中,重点放在自己的属性上: 要返回其可枚举自身属性的对象 事实上,keys是ES5对鲜为人知且不太有用的hasOwnProperty()方法的一次复兴,其使用方式如下: for (key in obj) { if (obj.hasOwnProperty(key))

我真的不明白。谁能给我解释一下吗?这是我的


唯一定义的键是
foo
。根据定义,继承的成员不是键。因此,在第一行中,您创建了一个从具有
getFoo
的对象继承而来的对象。此方法
getFoo
不是继承对象中的键,而是其父对象中的键

在参考中,重点放在自己的属性上:

要返回其可枚举自身属性的对象

事实上,
keys
是ES5对鲜为人知且不太有用的
hasOwnProperty()
方法的一次复兴,其使用方式如下:

for (key in obj)
{
    if (obj.hasOwnProperty(key)) // exclude inherited keys
    {
        // do something with obj[key]
    }
}

你到底不明白什么?那令人惊讶的行为呢?你预期会发生什么?你的预期背后的理由是什么?注释
//只会提醒foo
意味着他预期的不止这些。他希望
getFoo
也能成为一把钥匙。我对编程有点陌生。我了解对象、函数、警报以及散列的工作原理(比如ruby)。在这里,我有点难以理解正在发生的事情。例如,我不知道getFoo做什么。有很多花括号,所以我很困惑。我假定{}部分指定了原型。为什么我的_obj.foo=1?
for (key in obj)
{
    if (obj.hasOwnProperty(key)) // exclude inherited keys
    {
        // do something with obj[key]
    }
}