aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Grete <webmaster@christiangrete.com>2015-10-03 00:28:34 +0200
committerOleg Gaidarenko <markelog@gmail.com>2015-10-13 01:18:20 +0300
commit8a734344f2566dab5b8d34ecd79ae81ebd8843c5 (patch)
tree205ca86f3c119e74e4f168aca7055dbcd875452d
parent39cdb8c9aa0fde68f733553ba050a2ba9d86474c (diff)
downloadjquery-8a734344f2566dab5b8d34ecd79ae81ebd8843c5.tar.gz
jquery-8a734344f2566dab5b8d34ecd79ae81ebd8843c5.zip
Core: Support Symbol wrapper objects in jQuery.type
In ECMAScript 2015 (ES6), the native typeof operator returns "symbol" for Symbol primitives. As it is possible to wrap symbols using the Object constructor, symbols can be objects as well as any other primitive type in JavaScript and should be determined by jQuery.type. Closes gh-2627
-rw-r--r--src/core.js2
-rw-r--r--test/unit/core.js13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/core.js b/src/core.js
index 3b42d73ab..b1483c018 100644
--- a/src/core.js
+++ b/src/core.js
@@ -442,7 +442,7 @@ if ( typeof Symbol === "function" ) {
/* jshint ignore: end */
// Populate the class2type map
-jQuery.each( "Boolean Number String Function Array Date RegExp Object Error".split( " " ),
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
function( i, name ) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
} );
diff --git a/test/unit/core.js b/test/unit/core.js
index 407ae7e2c..42bfe91c1 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -272,6 +272,19 @@ QUnit.test( "type", function( assert ) {
assert.equal( jQuery.type( new MyObject() ), "object", "Object" );
} );
+QUnit.test( "type for `Symbol`", function( assert ) {
+ // Prevent reference errors
+ if( typeof Symbol !== "function" ) {
+ assert.expect( 0 );
+ return
+ }
+
+ assert.expect( 2 );
+
+ assert.equal( jQuery.type( Symbol() ), "symbol", "Symbol" );
+ assert.equal( jQuery.type( Object( Symbol() ) ), "symbol", "Symbol" );
+});
+
QUnit.asyncTest( "isPlainObject", function( assert ) {
assert.expect( 15 );