aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/data/Data.js22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/data/Data.js b/src/data/Data.js
index 85afd64f5..7b9ec5b54 100644
--- a/src/data/Data.js
+++ b/src/data/Data.js
@@ -29,24 +29,20 @@ Data.prototype = {
return 0;
}
- var descriptor = {},
- // Check if the owner object already has a cache key
- unlock = owner[ this.expando ];
+ // Check if the owner object already has a cache key
+ var unlock = owner[ this.expando ];
// If not, create one
if ( !unlock ) {
unlock = Data.uid++;
- // Secure it in a non-enumerable, non-writable property
- try {
- descriptor[ this.expando ] = { value: unlock };
- Object.defineProperties( owner, descriptor );
-
- // Support: Android<4
- // Fallback to a less secure definition
- } catch ( e ) {
- descriptor[ this.expando ] = unlock;
- jQuery.extend( owner, descriptor );
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = unlock;
+ // Otherwise secure it in a non-enumerable, non-writable property
+ } else {
+ Object.defineProperty( owner, this.expando, { value: unlock } );
}
}