mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
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
This commit is contained in:
parent
39cdb8c9aa
commit
8a734344f2
@ -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();
|
||||
} );
|
||||
|
@ -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 );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user