我有一个函数,期望一个jQuery对象,但为了方便也想接受选择器字符串和元素。所以,我做这样的事情:可以两次初始化jQuery对象吗?
test($('.something'));
test('.something');
test($('.something')[0]);
function test (param1) {
//ensure jquery object
if (!(param1 instanceof $)) {
param1 = $(param1);
}
//do something with $param1
}
会疼,只是初始化jQuery对象,无论还是有意义和性能问题呢?
function test (param1) {
//ensure jquery object
param1 = $(param1);
//do something with $param1
}
+1为jsperf测试,非常好! – Yoni
谢谢。我已经将这三种情况中的每一种与这两种功能中的每一种相加。所以我们可以看到在哪些情况下我们输了,在哪些情况下我们赢了。不好的一面:它需要一些时间来运行测试,因为现在有8 :( – Diego
谢谢这真棒!我认为有一个错误在我的代码tho ..我认为它应该是“if(!(param1 instanceof $ ))“否则它会检查它是否将param1转换为布尔值,然后检查它是否为jQuery。我修复了代码,它们更接近,但检查一个jQuery对象是最快的,没有重新初始化,我还添加了一个三元案例,在某些情况下更好:) http://jsperf.com/jquery-object-initialization/2 – TruMan1