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.
Cherry-picked from
8a734344f2566dab5b8d34ecd79ae81ebd8843c5
Closes gh-2627
/* 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();
} );
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( 16 );