不满足条件时停止javascript中的对象实例化

不满足条件时停止javascript中的对象实例化,javascript,error-handling,Javascript,Error Handling,我有一个自定义对象,它将jQuery对象作为参数。如果传递了无效的数据类型,处理停止对象实例化的最佳方法是什么 var MyObj = function( $obj ) { if( ! ($obj instanceof jQuery) ) return false // This is where it should cancel or error or something } var myInstance = new MyObj( 'invalid' ); 您的

我有一个自定义对象,它将jQuery对象作为参数。如果传递了无效的数据类型,处理停止对象实例化的最佳方法是什么

var MyObj = function( $obj ) {

    if( ! ($obj instanceof jQuery) )
        return false // This is where it should cancel or error or something

}

var myInstance = new MyObj( 'invalid' );

您的代码可以正常工作,只是instanceof有一点语法错误。应该是


如果(!($obj instanceof jQuery))

我想告诉用户有问题的最好方法是抛出一个新的错误,如下所示:

throw new Error('Wrong object type');
但这确实取决于你的目标

例如,当您将无效参数传递给jQuery的构造函数时,jQuery不会出错,它只返回一个空对象,代码继续


看了之后,我对你的问题有点困惑


如果您正在寻找代码不起作用的原因,请发表评论,我将删除该答案,因为它确实回答了您当前的问题。

处理异常情况的最佳方法取决于代码的特定情况。在某些情况下,当您有选择权时,您可以以一种不足为奇的方式继续执行。在其他情况下,当无法返回有意义的对象时,应该抛出一个错误。最好的指导原则是,您的代码不应该让使用它的人感到惊讶

jQuery中有一个以非意外方式处理异常情况的示例:

$('#myDiv').css('color', 'red');
假设没有#myDiv,您可以抛出一个错误,提醒开发人员他正在尝试更改不可抗拒元素的颜色。或者你可以默默地忽略它。jQuery选择了第二个选项,并以一种连贯的、毫不奇怪的方式使其工作


更快地抛出错误的好处是,当出现错误时,开发人员需要更少的时间进行调试。缺点是代码可能会更混乱。

不,不,你一开始是对的。我只是在我的示例中犯了一个愚蠢的小语法错误。在阅读了您和Tibos的回复后,我认为抛出错误是最合适的选择。谢谢:)