Update $.data to use a function instead of an object when attaching to JS objects in order to hide attached metadata from JSON.stringify. Remove event.js code that was doing this before specifically for events, which is now redundant. Fixes #8108. 1.5-stable

This commit is contained in:
Colin Snover
2011-02-07 10:48:38 -06:00
parent a2dbdc1f54
commit 7acb141ed7
4 changed files with 37 additions and 53 deletions

View File

@@ -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 {