Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added some tweaks to $.type to handle null and undefined. Added a bun…
…ch of unit tests as well.
  • Loading branch information
jeresig committed Aug 27, 2010
1 parent 9ce1d09 commit 5d2be7e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/core.js
Expand Up @@ -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 ) {
Expand Down
23 changes: 23 additions & 0 deletions test/unit/core.js
Expand Up @@ -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);

Expand Down

3 comments on commit 5d2be7e

@jdalton
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can shorten it using String() or coerce it with '' + obj.

15.5.1.1 String ( [ value ] )

Returns a String value (not a String object) computed by ToString(value). If value is not supplied, the empty String "" is returned.

return obj == null ? String(obj) : toString.call(obj).slice(8, -1).toLowerCase();

@jeresig
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call! Landed in 7f18d29.

@steida
Copy link

@steida steida commented on 5d2be7e Aug 27, 2010

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my type suggestion http://gist.github.com/204554

Please sign in to comment.