我有一个自定义对象,它将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' );
答案 0 :(得分:1)
我想告诉用户出现问题的最佳方法是抛出一个新的错误:
throw new Error('Wrong object type');
但这实际上取决于你的目标。
示例,当您将无效参数传递给构造函数时,jQuery不会抛出错误,它只返回一个空对象并继续执行代码。
看到Cal Markham answer后,我对你的问题感到有点困惑。
如果您正在查看为什么您的代码不起作用,请注释并删除该答案,因为它确实回答了您当前的问题。
答案 1 :(得分:1)
处理异常情况的最佳方法取决于代码的特定情况。在某些情况下,当您有选项时,您可以以非令人惊讶的方式继续执行。在其他情况下,当您无法返回有意义的对象时,您应该抛出错误。最好的指导原则是您的代码不应该让使用它的人感到惊讶。
以非令人惊讶的方式处理的异常情况的一个例子是jQuery:
$('#myDiv').css('color', 'red');
假设没有#myDiv,您可以抛出错误来提醒开发人员他正在尝试更改不存在元素的颜色。或者你可以默默地忽略它。 jQuery选择了第二个选项,并使其以连贯,非令人惊讶的方式工作。
更快地抛出错误的好处是,当出现问题时,开发人员需要更少的时间进行调试。缺点是代码可能会更混乱。
答案 2 :(得分:0)
你拥有的代码可以正常工作,只是一个例子的语法错误。它应该是
if( ! ($obj instanceof jQuery) )