Revision: 24017
Updated Code
at April 28, 2010 14:32 by wizard04
Updated Code
/****************************************
A more useful version of `typeof` and functions to test if a parameter is of a specified type.
Inspired by http://snipplr.com/view/1996/typeof--a-more-specific-typeof/
Examples:
var u;
is.Undefined(u) //true
is.Number(u) //false
var n=1;
is.Number(n) //true; note that (n instanceof Number) would be false since n is a literal
is.Object(n) //true
/****************************************/
var is = new (function(){
var undefined;
function test(type)
{
return function(o){
return (o instanceof type ||
(o !== undefined && !(o instanceof Object) /*i.e., it's a literal*/ && o.constructor === type));
};
}
this.Undefined = function(o){ return o === undefined; };
this.Null = function(o){ return o === null; };
this.Boolean = test(Boolean);
this.Number = test(Number);
this.String = test(String);
this.RegExp = function(o){ return (o instanceof RegExp); };
this.Date = function(o){ return (o instanceof Date); };
this.Array = function(o){ return (o instanceof Array); };
this.Function = function(o){ return (o instanceof Function); };
this.Object = function(o){ return (o instanceof Object || this.Boolean(o) || this.Number(o) || this.String(o)); };
})();
//note that if argument `o` is an instance of more than one data type (which can happen if you mess with prototypes),
// only the first type tested will be returned
function typeOf(o)
{
for(var type in is){ if(type != "Object" && is[type](o)) return type.toLowerCase(); }
if(is.Object(o)) return "object";
return "";
}
/*
//test all data types
//it's worth noting that, in IE, an HTML element is not considered an instance of Object
var u;
function f(){ this.toString=function(){return "[object f]"} };
var h = document.createElement("div");
var a = [u, null, true, (new Boolean), 1, (new Number), "s", (new String), /r/, (new RegExp), (new Date), [0,1], (new Array),
f, function(){}, (new Function), {}, (new Object), (new f), h];
for(var i=0; i<a.length; i++)
{
console.log(a[i]+" : "+typeOf(a[i]));
}
*/
Revision: 24016
Updated Code
at March 9, 2010 08:28 by wizard04
Updated Code
/****************************************
A more useful version of `typeof` and functions to test if a parameter is of a specified type.
Inspired by http://snipplr.com/view/1996/typeof--a-more-specific-typeof/
Examples:
var u;
is.Undefined(u) //true
is.Number(u) //false
var n=1;
is.Number(n) //true; note that (n instanceof Number) would be false since n is a literal
is.Object(n) //true
/****************************************/
var is = new (function(){
var undefined;
function test(type)
{
return function(o){
return (o instanceof type ||
(o !== undefined && !(o instanceof Object) /*i.e., it's a literal*/ && o.constructor === type));
};
}
this.Undefined = function(o){ return o === undefined; };
this.Null = function(o){ return o === null; };
this.Boolean = test(Boolean);
this.Number = test(Number);
this.String = test(String);
this.RegExp = test(RegExp);
this.Date = test(Date);
this.Array = test(Array);
this.Function = test(Function);
this.Object = test(Object);
})();
//note that if argument `o` is an instance of more than one data type (which can happen if you mess with prototypes),
// only the first type tested will be returned
function typeOf(o)
{
for(var type in is){ if(is[type](o)) return type.toLowerCase(); }
}
/*
//test all data types
var u;
function f(){ this.toString=function(){return "[object f]"} };
var g = new f;
var a = [u, null, true, (new Boolean), 1, (new Number), "s", (new String), /r/, (new RegExp), (new Date), [0,1], (new Array),
f, function(){}, (new Function), {}, (new Object), g];
for(var i=0; i<a.length; i++)
{
console.log(a[i]+" : "+typeOf(a[i]));
}
*/
Revision: 24015
Updated Code
at March 9, 2010 08:28 by wizard04
Updated Code
/****************************************/
A more useful version of `typeof` and functions to test if a parameter is of a specified type.
Inspired by http://snipplr.com/view/1996/typeof--a-more-specific-typeof/
Examples:
var u;
is.Undefined(u) //true
is.Number(u) //false
var n=1;
is.Number(n) //true; note that (n instanceof Number) would be false since n is a literal
is.Object(n) //true
/****************************************/
var is = new (function(){
var undefined;
function test(type)
{
return function(o){
return (o instanceof type ||
(o !== undefined && !(o instanceof Object) /*i.e., it's a literal*/ && o.constructor === type));
};
}
this.Undefined = function(o){ return o === undefined; };
this.Null = function(o){ return o === null; };
this.Boolean = test(Boolean);
this.Number = test(Number);
this.String = test(String);
this.RegExp = test(RegExp);
this.Date = test(Date);
this.Array = test(Array);
this.Function = test(Function);
this.Object = test(Object);
})();
//note that if argument `o` is an instance of more than one data type (which can happen if you mess with prototypes),
// only the first type tested will be returned
function typeOf(o)
{
for(var type in is){ if(is[type](o)) return type.toLowerCase(); }
}
/*
//test all data types
var u;
function f(){ this.toString=function(){return "[object f]"} };
var g = new f;
var a = [u, null, true, (new Boolean), 1, (new Number), "s", (new String), /r/, (new RegExp), (new Date), [0,1], (new Array),
f, function(){}, (new Function), {}, (new Object), g];
for(var i=0; i<a.length; i++)
{
console.log(a[i]+" : "+typeOf(a[i]));
}
*/
Revision: 24014
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 18, 2010 15:31 by wizard04
Initial Code
//inspired by http://snipplr.com/view/1996/typeof--a-more-specific-typeof/
var is = new (function(){
var undefined;
function test(type)
{
return function(o){
return (o instanceof type ||
(o !== undefined && !(o instanceof Object) /*i.e., it's a literal*/ && o.constructor === type));
};
}
this.Undefined = function(o){ return o === undefined; };
this.Null = function(o){ return o === null; };
this.Boolean = test(Boolean);
this.Number = test(Number);
this.String = test(String);
this.RegExp = test(RegExp);
this.Date = test(Date);
this.Array = test(Array);
this.Function = test(Function);
this.Object = test(Object);
})();
//note that if argument `o` is an instance of more than one data type (which can happen if you mess with prototypes),
// only the first type tested will be returned
function typeOf(o)
{
for(var type in is){ if(is[type](o)) return type.toLowerCase(); }
}
/*
//test all data types
var u;
function f(){ this.toString=function(){return "[object f]"} };
var g = new f;
var a = [u, null, true, (new Boolean), 1, (new Number), "s", (new String), /r/, (new RegExp), (new Date), [0,1], (new Array),
f, function(){}, (new Function), {}, (new Object), g];
for(var i=0; i<a.length; i++)
{
console.log(a[i]+" : "+typeOf(a[i]));
}
*/
Initial URL
Initial Description
A more useful version of `typeof` and functions to test if a parameter is of a specified type.
Initial Title
JavaScript Type Tests
Initial Tags
javascript
Initial Language
JavaScript