mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Avoid side-effects when calling jQuery.hasData
Signed-off-by: Rick Waldron <waldron.rick@gmail.com>
This commit is contained in:
parent
1f530e2867
commit
332a490573
10
src/data.js
10
src/data.js
@ -21,11 +21,17 @@ function Data() {
|
||||
Data.uid = 1;
|
||||
|
||||
Data.prototype = {
|
||||
key: function( owner ) {
|
||||
key: function( owner, options ) {
|
||||
var descriptor = {},
|
||||
// Check if the owner object already has a cache key
|
||||
unlock = owner[ this.expando ];
|
||||
|
||||
// `readonly` calls from hasData, on owners with no key
|
||||
// should not create new/empty cache records
|
||||
if ( !unlock && (options && options.readonly) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// If not, create one
|
||||
if ( !unlock ) {
|
||||
unlock = Data.uid++;
|
||||
@ -158,7 +164,7 @@ Data.prototype = {
|
||||
},
|
||||
hasData: function( owner ) {
|
||||
return !jQuery.isEmptyObject(
|
||||
this.cache[ this.key( owner ) ]
|
||||
this.cache[ this.key( owner, { readonly: true }) ] || {}
|
||||
);
|
||||
},
|
||||
discard: function( owner ) {
|
||||
|
@ -51,6 +51,17 @@ test( "jQuery._data & _removeData, expected returns", function() {
|
||||
);
|
||||
});
|
||||
|
||||
test( "jQuery.hasData no side effects", function() {
|
||||
expect(1);
|
||||
var obj = {};
|
||||
|
||||
jQuery.hasData( obj );
|
||||
|
||||
equal( Object.getOwnPropertyNames( obj ).length, 0,
|
||||
"No data expandos where added when calling jQuery.hasData(o)"
|
||||
);
|
||||
});
|
||||
|
||||
function dataTests (elem) {
|
||||
var oldCacheLength, dataObj, internalDataObj, expected, actual;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user