日期:2014-05-16  浏览次数:20331 次

Jquery求问 $;与$();的区别,并且用$.each()方法遍历结果不一样?
本帖最后由 whq731 于 2013-07-24 16:44:54 编辑
如下代码:



var jQuery = $;
var jQueryObject = $();

for(var key in jQuery){
    console.log(key);

}

for(var key2 in jQueryObject){
     console.log(key2);

}


以上两种方法都能打出各自的方法名

但是换成用$.each()方法遍历结果就不一样了?

$.each(jQuery,function(value){  console.log(value); });


第一种会打出所有方法名

$.each(jQueryObject,function(value){    console.log(value);  });


第二种在控制台会有异常 Uncaught TypeError: Cannot call method 'each' of undefined  
遍历 JavaScript jQuery

------解决方案--------------------
for in遍历有一个问题就是,记得用hasOwnProperty判断一下。

for(var i in obj) {
  if(obj.hasOwnProperty(i)) {
    console.log(i);
  }
}


如果不用hasOwnProperty判断一下,会遍历obj的原型链上的所有可枚举的属性。

这也就是$和$()的区别。$是jQuery本身,$()是jQuery对象.
window.$ = function (e,t){return new i.fn.init(e,t,u)}

$()等价于new jQuery().