如何检查一个对象是否是JavaScript中某一组原型的实例?



我知道我可以像这样检查一个对象是否包含任何原型的实例:

for (var key in obj) {
    if ((obj[key] instanceof head) || (obj[key] instanceof body)) {
        console.log("Key Accepted: " + obj[key]);
    }
}

我知道我可以检查一个对象是否是对象列表的成员:

var fruitBasket = ["Banana", "Orange", "Apple", "Mango"];
if (fruitBasket.indexOf("Apple") !== -1) {
    console.log("There's an apple in this fruit basket!");
}

但是我如何检查一个对象是否是某个原型集的实例呢?

如果你的浏览器支持它(IE9+),你可以使用some类/函数数组

var obj = ...,
    result = [Array, Number, Foo].some(function(clas) { return obj instanceof clas; });

如果objArrayNumberFoo的一个实例,则result将是true

如果没有some方法,您可以使用for简单地遍历数组。

最新更新