Added some tweaks to $.type to handle null and undefined. Added a bunch of unit tests...
authorJohn Resig <jeresig@gmail.com>
Fri, 27 Aug 2010 13:10:52 +0000 (06:10 -0700)
committerJohn Resig <jeresig@gmail.com>
Fri, 27 Aug 2010 13:10:52 +0000 (06:10 -0700)
src/core.js
test/unit/core.js

index 5a00555..81a920b 100644 (file)
@@ -446,7 +446,11 @@ jQuery.extend({
        },
 
        type: function( obj ) {
-               return toString.call(obj).slice(8, -1).toLowerCase();
+               return obj === null ?
+                       "null" :
+                       obj === undefined ?
+                       "undefined" :
+                       toString.call(obj).slice(8, -1).toLowerCase();
        },
 
        isPlainObject: function( obj ) {
index 3960a7d..3ba16a4 100644 (file)
@@ -217,6 +217,29 @@ test("trim", function() {
        equals( jQuery.trim( false ), "false", "Boolean" );
 });
 
+test("type", function() {
+       expect(18);
+
+       equals( jQuery.type(null), "null", "null" );
+       equals( jQuery.type(undefined), "undefined", "undefined" );
+       equals( jQuery.type(true), "boolean", "Boolean" );
+       equals( jQuery.type(false), "boolean", "Boolean" );
+       equals( jQuery.type(Boolean(true)), "boolean", "Boolean" );
+       equals( jQuery.type(0), "number", "Number" );
+       equals( jQuery.type(1), "number", "Number" );
+       equals( jQuery.type(Number(1)), "number", "Number" );
+       equals( jQuery.type(""), "string", "String" );
+       equals( jQuery.type("a"), "string", "String" );
+       equals( jQuery.type(String("a")), "string", "String" );
+       equals( jQuery.type({}), "object", "Object" );
+       equals( jQuery.type(/foo/), "regexp", "RegExp" );
+       equals( jQuery.type(new RegExp("asdf")), "regexp", "RegExp" );
+       equals( jQuery.type([1]), "array", "Array" );
+       equals( jQuery.type(new Date()), "date", "Date" );
+       equals( jQuery.type(new Function("return;")), "function", "Function" );
+       equals( jQuery.type(function(){}), "function", "Function" );
+});
+
 test("isPlainObject", function() {
        expect(14);