Javascript 使用for…in和instanceof解析对象

Javascript 使用for…in和instanceof解析对象,javascript,object,Javascript,Object,我试图循环一个对象,并根据它的类型在每个不同的子对象上使用不同的函数instanceof似乎是识别非内置类型的唯一方法,因此我尝试将它与一起用于中的;但是,我没有得到预期的输出 下面是一个提琴示例来说明我的问题: 输出是 true true false false false 首先,这样做的合适方法是什么 其次,为什么for…in循环中的变量以这种方式运行 请不要使用jQuery。当您使用for..迭代对象时,中的循环变量将具有字符串类型的键。所以,你应该像这样检查 for (i in con

我试图循环一个对象,并根据它的类型在每个不同的子对象上使用不同的函数instanceof似乎是识别非内置类型的唯一方法,因此我尝试将它与一起用于中的;但是,我没有得到预期的输出

下面是一个提琴示例来说明我的问题:

输出是

true
true
false
false
false
首先,这样做的合适方法是什么

其次,为什么for…in循环中的变量以这种方式运行


请不要使用jQuery。

当您使用
for..迭代对象时,
中的循环变量将具有字符串类型的键。所以,你应该像这样检查

for (i in container) {
    out(container[i] instanceof testObject);
}
现在,您正在使用与
container
中的键
i
对应的对象。通过此更改,所有项目的计算结果将为
true

注意:
for..in
也应该提供所有继承的属性。因此,对对象使用
for..in
时的正常循环模式是

for (i in container) {
    if (container.hasOwnProperty(i)) {
        out(container[i] instanceof testObject);
    }
}

这将确保只检查对象中直接定义的属性。

console.log(i)---始终检查变量中的实际内容,而不仅仅是假设。我需要停止编码睡眠剥夺。我假设……在函数中像C++风格迭代器。容器[i]似乎在运行。。。
for (i in container) {
    if (container.hasOwnProperty(i)) {
        out(container[i] instanceof testObject);
    }
}