有没有办法根据自定义类型检查javascript中对象的类型?我可能写错了,所以让我告诉你我想要做什么:
if(typeof value == "MyClassType")
console.log(true);你能用typeof、instanceof或任何类似的东西做到这一点吗?如果用户提供的值不是我期望的类,我想抛出一个错误。
发布于 2012-02-04 11:43:07
使用instanceof运算符:
if (!(value instanceof MyClassType)) {
throw new Error("expected object of type 'MyClassType'");
}文档:msdn、mdn
发布于 2012-02-04 13:14:40
在javascript中,你不应该真正关心一个对象是否是一个特定的类型。你应该关心的是它是否有你期望的方法。实际上,只要对象上有实现这些方法预期行为的适当方法,就可以提供任何对象。这是javascript的优点之一。它不是困难的类型,也不需要困难的类型。看看jQuery模型吧。它们使jQuery对象支持数组的方法,因此在大多数情况下可以使用它来代替数组,即使从技术上讲它不只是一个数组。
因此,我建议您应该测试对象,看看是否在它上面看到了一些预期的和需要的方法,如果找到了它们,然后愉快地继续进行。如果你没有找到你需要的方法,那么抛出一个错误。这将立即捕获一般的误用问题,同时不会过度限制客户端如何使用API。
您可以只使用以下内容来测试方法/属性的存在:
if (obj.makeQuackSound && obj.flySouthForWinter) {
// must be a duck
}如果你想检查它们是否真的是函数,而不仅仅是属性,你也可以这样做。
https://stackoverflow.com/questions/9138221
复制相似问题