Когда вы приводите объект DOM к объекту jQuery (т.е. $("#SomeElementID")
), jQuery добавляет к этому объекту специальное свойство "expando". Я считаю, что это свойство используется библиотекой для облегчения кэширования элемента во внутреннем массиве для более быстрого доступа.
Пролистывая библиотеку, это код, который создает это значение и как он используется внутри:
var expando = "jQuery" + now(), uuid = 0, windowData = {};
jQuery.extend({
cache: {},
data: function( elem, name, data ) {
elem = elem == window ?
windowData :
elem;
var id = elem[ expando ];
// Compute a unique ID for the element
if ( !id )
id = elem[ expando ] = ++uuid;
// Only generate the data cache if we're
// trying to access or manipulate it
if ( name && !jQuery.cache[ id ] )
jQuery.cache[ id ] = {};
// Prevent overriding the named cache with undefined values
if ( data !== undefined )
jQuery.cache[ id ][ name ] = data;
// Return the named cache data, or the ID for the element
return name ?
jQuery.cache[ id ][ name ] :
id;
},
// snipped