有什么方法可以检查变量是否是真正的jqXHR?

正如标题已经提到的那样,有没有办法检查变量是否是真正的jqXHR?

我是说(想象):

var resource = $.get('/resource'); if (resource instanceof jqXHR) { // do something } 

我试图解决的实际问题是我正在研究的模态插件。

 $('#element').modal({ content : function() { return $.get('/resource'); } }); 

并且, content变量可以是stringfunction 。 在string情况下,它将是静态的,在function情况下,它将在每次打开模态时运行。

但是,我希望允许content回调返回jqXHRstring 。 使用字符串非常简单, if (typeof returned === 'string') ,但是jqXHR怎么样?

我知道我可以简单地检查string ,如果它不是string ,假设它是jqXHR ,但我希望我的插件尽可能强大,并且禁止使用意外类型。

我建议只检查它是否是一个承诺对象。 这将使您的代码更加健壮,因为如果用户需要执行更复杂的操作,用户可以返回自定义延迟对象,或者他们可以简单地返回jqXHR以获得相同的效果。

 if ($.type(resource) === "string") { doStuff(resource); } elseif (resource && resource.promise) { resource.promise().done(doStuff); }