diff --git a/src/data/Data.js b/src/data/Data.js index ce6d8fa9ba..31ff4318c1 100644 --- a/src/data/Data.js +++ b/src/data/Data.js @@ -22,7 +22,7 @@ Data.prototype = { // If not, create one if ( !value ) { - value = Object.create( null ); + value = {}; // We can accept data for non-element nodes in modern browsers, // but we should not, see #8335. diff --git a/test/unit/data.js b/test/unit/data.js index 55879415fa..3a2047cff5 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -990,17 +990,20 @@ QUnit.test( ".data(prop) does not create expando", function( assert ) { } } ); -QUnit.test( "keys matching Object.prototype properties (gh-3256)", function( assert ) { - assert.expect( 2 ); +QUnit.test( ".data() returns a regular object (jQuery <4 only, gh-4665)", function( assert ) { + assert.expect( 4 ); - var div = jQuery( "
" ); + function verifyRegularObject( assert, object ) { + assert.strictEqual( object.hasOwnProperty, Object.prototype.hasOwnProperty, + "Data object has the hasOwnProperty method" ); + assert.strictEqual( object + "", "[object Object]", + "Data object can be stringified" ); + } - assert.strictEqual( div.data( "hasOwnProperty" ), undefined, - "hasOwnProperty not matched (before forced data creation)" ); + var elem = jQuery( "" ); - // Force the creation of a data object for this element. - div.data( { foo: "bar" } ); + verifyRegularObject( assert, elem.data() ); - assert.strictEqual( div.data( "hasOwnProperty" ), undefined, - "hasOwnProperty not matched (after forced data creation)" ); + elem.data( "foo", "bar" ); + verifyRegularObject( assert, elem.data() ); } );Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: