当前位置:  开发笔记 > 编程语言 > 正文

在javascript中测试对象是否是jQuery对象的正确/正确方法是什么?

如何解决《在javascript中测试对象是否是jQuery对象的正确/正确方法是什么?》经验,为你挑选了2个好方法。

我正在编写一个javascript函数,并且在"紧凑"的javascript设计方式中,参数的类型/长度会改变函数的行为.一个可能的参数类型是一个jQuery对象,我想要非常特殊的逻辑.

测试对象是否是jQuery实例的最佳方法是什么?



1> Christoph..:

取决于jQuery的内部工作原理,但我会选择

obj instanceof jQuery

这是实现它的最"JavaScript方式".请记住,在窗口/框架边界之间传递对象时会失败!

托马拉克的建议

'jquery' in obj

在这种情况下应该仍然可以工作,所以如果你希望进行多窗口数据交换,你应该使用它.我不推荐它作为一般解决方案,因为只是寻找一个名为的属性'jquery'不太可靠.

in如果obj是原语,运算符也会抛出错误.如果不希望出现此行为,您可以考虑使用以下测试之一:

obj && obj.jquery
'jquery' in Object(obj)

我发现第二个更吸引人,但第一个可能会更快.

检查

Object(obj).hasOwnProperty('jquery')

将失败,因为jQuery对象只从其原型继承属性.

我也不鼓励constructor在JavaScript中使用该属性进行类型检查 - 它可能对jQuery可靠地工作,但由于constructor构造函数prototype在实例化时的属性所指向的对象的属性,有很多方法可以解决这个问题.测试...


作为旁注:

jQuery本身检查obj && obj.jquery.它instanceof甚至不使用一次.相反,它使用typeof鸭子类型和toString.call()类型检查的组合,它应该在instanceof失败的地方工作.

此外,hasOwnProperty()从来没有使用过.我不确定这说明jQuery库的代码质量;)



2> VonC..:

以下之一:

obj instanceof jQuery
obj && obj.constructor == jQuery
obj && obj.jquery 

建议使用 instanceof

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有