ホームページ  >  に質問  >  本文

javascript - $.isEmptyObject 函数疑问

$.isEmptyObject 我们知道是判断对象是否为空,如果不存在也返回false,但是我想问的是:这个和我们直接写判断有什么区别呢:比如

if($.isEmptyObject($('.classname'))) 和 if($('.classname'))

还请大神指教:

伊谢尔伦伊谢尔伦2718日前304

全員に返信(3)返信します

  • PHP中文网

    PHP中文网2017-04-11 09:23:17

    判断的对象不一样,$.isEmptyObject判断的是js对象即{},你理解的是jquery的DOM对象。

    返事
    0
  • PHPz

    PHPz2017-04-11 09:23:17

    不一样的,完全不一样。

    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);

    返事
    0
  • PHP中文网

    PHP中文网2017-04-11 09:23:17

    jquery源码部分:

    isEmptyObject: function( obj ) {
            var name;
            for ( name in obj ) {
                return false;
            }
            return true;
        },

    这个方法就是直接判断是不是空的对象,$('')返回的是一个jquery对象,即使没有这个DOM,还是返回一个jquery对象,是个jquery对象,起码jquery的方法都会有,所以调用这个方法势必返回false

    所以与其例子里要判断dom是否存在,用$('').length!=0 更好~

    返事
    0
  • キャンセル返事