首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果某个类的值不属于某个“JavaScript”,是否抛出错误?

如果某个类的值不属于某个“JavaScript”,是否抛出错误?
EN

Stack Overflow用户
提问于 2012-02-04 11:42:02
回答 2查看 70关注 0票数 1

有没有办法根据自定义类型检查javascript中对象的类型?我可能写错了,所以让我告诉你我想要做什么:

代码语言:javascript
复制
if(typeof value == "MyClassType")
     console.log(true);

你能用typeof、instanceof或任何类似的东西做到这一点吗?如果用户提供的值不是我期望的类,我想抛出一个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-04 11:43:07

使用instanceof运算符:

代码语言:javascript
复制
if (!(value instanceof MyClassType)) {
    throw new Error("expected object of type 'MyClassType'");
}

文档:msdnmdn

票数 4
EN

Stack Overflow用户

发布于 2012-02-04 13:14:40

在javascript中,你不应该真正关心一个对象是否是一个特定的类型。你应该关心的是它是否有你期望的方法。实际上,只要对象上有实现这些方法预期行为的适当方法,就可以提供任何对象。这是javascript的优点之一。它不是困难的类型,也不需要困难的类型。看看jQuery模型吧。它们使jQuery对象支持数组的方法,因此在大多数情况下可以使用它来代替数组,即使从技术上讲它不只是一个数组。

因此,我建议您应该测试对象,看看是否在它上面看到了一些预期的和需要的方法,如果找到了它们,然后愉快地继续进行。如果你没有找到你需要的方法,那么抛出一个错误。这将立即捕获一般的误用问题,同时不会过度限制客户端如何使用API。

您可以只使用以下内容来测试方法/属性的存在:

代码语言:javascript
复制
if (obj.makeQuackSound && obj.flySouthForWinter) {
    // must be a duck
}

如果你想检查它们是否真的是函数,而不仅仅是属性,你也可以这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9138221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档