五、数据缓存Data5——jQuery.hasData(elem)

方法jQuery.hasData(elem)用于判断一个DOM元素或JavaScript对象是否又与之相关联的数据。如果没有与之关联的数据(没有数据缓存对象或是空数据对象),则返回false,否则返回。

方法jQuery.hasData(elem)的主要优势在于,如果不存在关联的数据缓存对象,则不会创建并关联一个数据缓存对象。与此相反,方法jQuery.data(elem)则会返回一个数据缓存对象给调用者,如果不存在则创建一个。

// 代码行:4004——4158
function Data() {
    // 设定唯一标识
    this.expando = jQuery.expando + Data.uid++;
}

Data.uid = 1;

Data.prototype = {
    // 代码行:4151——4154
    hasData: function( owner ) {
        // 获取DOM元素或JavaScript对象关联的数据缓存对象。
        var cache = owner[ this.expando ];
        // 如果关联的数据缓存对象存在,并且含有数据,则返回true,否则返回false
        return cache !== undefined && !jQuery.isEmptyObject( cache );
    }
};
var dataPriv = new Data();

var dataUser = new Data();

jQuery.extend( {
    // 代码行:4224——4226
    hasData: function( elem ) {
        return dataUser.hasData( elem ) || dataPriv.hasData( elem );
    },
} );

 

posted @ 2019-05-31 11:01  道鼎金刚  阅读(292)  评论(0)    收藏  举报