$.isEmptyObject 我们知道是判断对象是否为空,如果不存在也返回false,但是我想问的是:这个和我们直接写判断有什么区别呢:比如
if($.isEmptyObject($('.classname'))) 和 if($('.classname'))
还请大神指教:
小伙看你根骨奇佳,潜力无限,来学PHP伐。
判断的对象不一样,$.isEmptyObject判断的是js对象即{},你理解的是jquery的DOM对象。
不一样的,完全不一样。
if这种会先把对象调用valueOf,然后类型转化为boolean,再然后判断走,判断的是类型转化后是否为真。
而isEmptyObject是判断这个是不是空对象!
这种问题都是直接看源码吧https://github.com/jquery/jqu...
isEmptyObject: function( obj ) { /* eslint-disable no-unused-vars */ // See https://github.com/eslint/eslint/issues/6125 var name; for ( name in obj ) { return false; } return true; },
你试试
if({}) alert() // isEmptyObject for(var i in {}) alert(i);
jquery源码部分:
isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; },
这个方法就是直接判断是不是空的对象,$('')返回的是一个jquery对象,即使没有这个DOM,还是返回一个jquery对象,是个jquery对象,起码jquery的方法都会有,所以调用这个方法势必返回false
所以与其例子里要判断dom是否存在,用$('').length!=0 更好~
判断的对象不一样,$.isEmptyObject判断的是js对象即{},你理解的是jquery的DOM对象。
不一样的,完全不一样。
if这种会先把对象调用valueOf,然后类型转化为boolean,再然后判断走,判断的是类型转化后是否为真。
而isEmptyObject是判断这个是不是空对象!
这种问题都是直接看源码吧
https://github.com/jquery/jqu...
你试试
jquery源码部分:
这个方法就是直接判断是不是空的对象,$('')返回的是一个jquery对象,即使没有这个DOM,还是返回一个jquery对象,是个jquery对象,起码jquery的方法都会有,所以调用这个方法势必返回false
所以与其例子里要判断dom是否存在,用$('').length!=0 更好~