From d92dc2902c1e49642ce5148f7e082d880e77a2c5 Mon Sep 17 00:00:00 2001
From: Colin Snover <github.com@zetafleet.com>
Date: Tue, 8 Feb 2011 12:13:27 -0600
Subject: [PATCH] Revert portions of 7acb141ed7f2dedd950bb65acf878098640d081e
 that attempt to use a function to hide jQuery metadata from
 JSON.stringify since this does not work reliably
 cross-browser (fails in Fx3.5, O11, Saf4).

---
 src/data.js       |    4 +---
 test/unit/data.js |   15 ++-------------
 2 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/src/data.js b/src/data.js
index faa44f3..9fee459 100644
--- a/src/data.js
+++ b/src/data.js
@@ -63,9 +63,7 @@ jQuery.extend({
 		}
 
 		if ( !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 () {};
+			cache[ id ] = {};
 		}
 
 		// An object can be passed to jQuery.data instead of a key/value pair; this gets
diff --git a/test/unit/data.js b/test/unit/data.js
index 1ce512c..455b923 100644
--- a/test/unit/data.js
+++ b/test/unit/data.js
@@ -22,7 +22,7 @@ function dataTests (elem) {
 	strictEqual( jQuery.hasData(elem), false, "jQuery.hasData agrees no data exists initially" );
 
 	var dataObj = jQuery.data(elem);
-	equals( typeof dataObj, elem.nodeType ? "object" : "function", "Calling data with no args gives us a data object reference" );
+	equals( typeof dataObj, "object", "Calling data with no args gives us a data object reference" );
 	strictEqual( jQuery.data(elem), dataObj, "Calling jQuery.data returns the same data object when called multiple times" );
 
 	strictEqual( jQuery.hasData(elem), false, "jQuery.hasData agrees no data exists even when an empty data obj exists" );
@@ -465,15 +465,4 @@ test(".removeData()", function() {
 
 	div.removeData("test.foo");
 	equals( div.data("test.foo"), undefined, "Make sure data is intact" );
-});
-
-if (window.JSON && window.JSON.stringify) {
-	test("JSON serialization (#8108)", function () {
-		expect(1);
-
-		var obj = { foo: "bar" };
-		jQuery.data(obj, "hidden", true);
-
-		equals( JSON.stringify(obj), '{"foo":"bar"}', "Expando is hidden from JSON.stringify" );
-	});
-}
\ No newline at end of file
+});
\ No newline at end of file
-- 
1.7.10.4