X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=blobdiff_plain;f=src%2Fdata.js;h=faa44f3de1f43aeab2f481afc291555f286750ae;hp=a1abc9ed6a05cd597da730711c37493045e1d86e;hb=7acb141ed7f2dedd950bb65acf878098640d081e;hpb=8e59a99e0ade75dec434f246f52e8b3f7393f359 diff --git a/src/data.js b/src/data.js index a1abc9e..faa44f3 100644 --- a/src/data.js +++ b/src/data.js @@ -63,12 +63,14 @@ jQuery.extend({ } if ( !cache[ id ] ) { - cache[ id ] = {}; + // Use a Function as the cache object instead of an Object on JS objects + // as a hack to prevent JSON.stringify from serializing it (#8108) + cache[ id ] = isNode ? {} : function () {}; } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache - if ( typeof name === "object" ) { + if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); } else { @@ -93,6 +95,13 @@ jQuery.extend({ thisCache[ name ] = data; } + // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should + // not attempt to inspect the internal events object using jQuery.data, as this + // internal data object is undocumented and subject to change. + if ( name === "events" && !thisCache[name] ) { + return thisCache[ internalKey ] && thisCache[ internalKey ].events; + } + return getByName ? thisCache[ name ] : thisCache; },