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