Made jQuery.type more consistent with host objects.
This commit is contained in:
parent
7367b524ec
commit
484cc6e220
12
src/core.js
12
src/core.js
|
@ -69,7 +69,10 @@ var jQuery = function( selector, context ) {
|
||||||
push = Array.prototype.push,
|
push = Array.prototype.push,
|
||||||
slice = Array.prototype.slice,
|
slice = Array.prototype.slice,
|
||||||
trim = String.prototype.trim,
|
trim = String.prototype.trim,
|
||||||
indexOf = Array.prototype.indexOf;
|
indexOf = Array.prototype.indexOf,
|
||||||
|
|
||||||
|
// [[Class]] -> type pairs
|
||||||
|
class2type = {};
|
||||||
|
|
||||||
jQuery.fn = jQuery.prototype = {
|
jQuery.fn = jQuery.prototype = {
|
||||||
init: function( selector, context ) {
|
init: function( selector, context ) {
|
||||||
|
@ -487,7 +490,7 @@ jQuery.extend({
|
||||||
type: function( obj ) {
|
type: function( obj ) {
|
||||||
return obj == null ?
|
return obj == null ?
|
||||||
String( obj ) :
|
String( obj ) :
|
||||||
toString.call(obj).slice(8, -1).toLowerCase();
|
class2type[ toString.call(obj) ] || "object";
|
||||||
},
|
},
|
||||||
|
|
||||||
isPlainObject: function( obj ) {
|
isPlainObject: function( obj ) {
|
||||||
|
@ -799,6 +802,11 @@ jQuery.extend({
|
||||||
browser: {}
|
browser: {}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Populate the class2type map
|
||||||
|
jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
|
||||||
|
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||||||
|
});
|
||||||
|
|
||||||
browserMatch = jQuery.uaMatch( userAgent );
|
browserMatch = jQuery.uaMatch( userAgent );
|
||||||
if ( browserMatch.browser ) {
|
if ( browserMatch.browser ) {
|
||||||
jQuery.browser[ browserMatch.browser ] = true;
|
jQuery.browser[ browserMatch.browser ] = true;
|
||||||
|
|
|
@ -219,7 +219,7 @@ test("trim", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("type", function() {
|
test("type", function() {
|
||||||
expect(18);
|
expect(22);
|
||||||
|
|
||||||
equals( jQuery.type(null), "null", "null" );
|
equals( jQuery.type(null), "null", "null" );
|
||||||
equals( jQuery.type(undefined), "undefined", "undefined" );
|
equals( jQuery.type(undefined), "undefined", "undefined" );
|
||||||
|
@ -239,6 +239,10 @@ test("type", function() {
|
||||||
equals( jQuery.type(new Date()), "date", "Date" );
|
equals( jQuery.type(new Date()), "date", "Date" );
|
||||||
equals( jQuery.type(new Function("return;")), "function", "Function" );
|
equals( jQuery.type(new Function("return;")), "function", "Function" );
|
||||||
equals( jQuery.type(function(){}), "function", "Function" );
|
equals( jQuery.type(function(){}), "function", "Function" );
|
||||||
|
equals( jQuery.type(window), "object", "Window" );
|
||||||
|
equals( jQuery.type(document.body), "object", "Element" );
|
||||||
|
equals( jQuery.type(document.createTextNode("foo")), "object", "TextNode" );
|
||||||
|
equals( jQuery.type(document.getElementsByTagName("*")), "object", "NodeList" );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("isPlainObject", function() {
|
test("isPlainObject", function() {
|
||||||
|
|
Loading…
Reference in a new issue