javascript - $.isEmptyObject 函数疑问
伊谢尔伦
伊谢尔伦 2017-04-11 09:21:17
0
3
305

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

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

还请大神指教:

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
Ty80

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

PHPzhong

不一样的,完全不一样。

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

jquery源码部分:

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!