Connecting Tech Pros Worldwide Help | Site Map

checking type?

  #1  
Old July 20th, 2005, 11:23 AM
Robert Mark Bram
Guest
 
Posts: n/a
Howdy All!

How can you tell the type of an object?

I am not talking about using "typeof" ..

I am talking about being able to determine if an object is a Date or String
....

Thanks for any advice!

Rob
:)


  #2  
Old July 20th, 2005, 11:23 AM
Janwillem Borleffs
Guest
 
Posts: n/a

re: checking type?



"Robert Mark Bram" <robert.bram@yourshoesinfotech.monash.edu.au> schreef in
bericht news:3f5f12cc$0$4187$afc38c87@news.optusnet.com.au ...[color=blue]
> Howdy All!
>
> How can you tell the type of an object?
>
> I am not talking about using "typeof" ..
>
> I am talking about being able to determine if an object is a Date or[/color]
String[color=blue]
> ...
>[/color]

You could test for methods:

function test (obj) {
var type = typeof obj;
if (type == 'object') {
if (obj.getDate) return 'Date';
if (obj.split) return 'String';
return object;
}
return type;
}

alert(test('test')); // Alerts 'string'
alert(test(new String('test'))); // Alerts 'String';
alert(test(new Date())); // Alerts 'Date';


JW



  #3  
Old July 20th, 2005, 11:23 AM
Janwillem Borleffs
Guest
 
Posts: n/a

re: checking type?



"Janwillem Borleffs" <jwb@jwbfoto.demon.nl> schreef in bericht
news:3f5f1b3a$0$28895$1b62eedf@news.euronet.nl...[color=blue]
>
> function test (obj) {
> var type = typeof obj;
> if (type == 'object') {
> if (obj.getDate) return 'Date';
> if (obj.split) return 'String';
> return object;
> }
> return type;
> }
>[/color]

Typo here, the statement:
return object;

should be:
return 'object';

JW



  #4  
Old July 20th, 2005, 11:23 AM
Janwillem Borleffs
Guest
 
Posts: n/a

re: checking type?



"Janwillem Borleffs" <jwb@jwbfoto.demon.nl> schreef in bericht
news:3f5f1bb2$0$28889$1b62eedf@news.euronet.nl...[color=blue]
>
> "Janwillem Borleffs" <jwb@jwbfoto.demon.nl> schreef in bericht
> news:3f5f1b3a$0$28895$1b62eedf@news.euronet.nl...[color=green]
> >
> > function test (obj) {
> > var type = typeof obj;
> > if (type == 'object') {
> > if (obj.getDate) return 'Date';
> > if (obj.split) return 'String';
> > return object;
> > }
> > return type;
> > }
> >[/color]
>[/color]

And to make it more compact:

function test (obj) {
var type = typeof obj;
if (type == 'object') {
if (obj.getDate) return 'Date';
if (obj.split) return 'String';
}
return type;
}


:-)

JW



  #5  
Old July 20th, 2005, 11:23 AM
Martin Honnen
Guest
 
Posts: n/a

re: checking type?




Robert Mark Bram wrote:[color=blue]
> Howdy All!
>
> How can you tell the type of an object?
>
> I am not talking about using "typeof" ..
>
> I am talking about being able to determine if an object is a Date or String
> ...[/color]

The strings you encounter in JavaScript are not usually objects at all
but primitive string values. And
typeof varName == 'string'
tells you whether something is a string value.
As for Date objects
if (typeof varName == 'object' && varName.constructor == Date)

--

Martin Honnen
http://JavaScript.FAQTs.com/

  #6  
Old July 20th, 2005, 11:23 AM
Lasse Reichstein Nielsen
Guest
 
Posts: n/a

re: checking type?


"Robert Mark Bram" <robert.bram@yourshoesinfotech.monash.edu.au> writes:
[color=blue]
> How can you tell the type of an object?[/color]
[color=blue]
> I am not talking about using "typeof" ..[/color]

Yes, that would just give "object".
[color=blue]
> I am talking about being able to determine if an object is a Date or String[/color]

All built in constructors (String, Boolean, Number, Array, Date, RegExp, etc.)
have a prototype with a property called "constructor" that points to itself.

That is
var x = new String("foo");
alert(x.constructor == String);
alerts true. You can use this to recognize the objects constructed by these
constructors *unless* someone fiddled with the constructor property. There
is nothing that prevents you from doing:
String.prototype.constructor = Array
(except common sense). So, the method is not fool proof, if the fools are
too inventive.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'
  #7  
Old July 20th, 2005, 11:23 AM
Richard Cornford
Guest
 
Posts: n/a

re: checking type?


"Janwillem Borleffs" <jwb@jwbfoto.demon.nl> wrote in message
news:3f5f2312$0$28891$1b62eedf@news.euronet.nl...
<snip>[color=blue]
> function test (obj) {
> var type = typeof obj;
> if (type == 'object') {
> if (obj.getDate) return 'Date';
> if (obj.split) return 'String';
> }
> return type;
> }[/color]

If - obj - happened to be - null - then - type - would still be "object"
but the property testing would cause errors. Maybe:-

if((obj)&&(type == 'object')){

- would be safer.

Richard.


  #8  
Old July 20th, 2005, 11:23 AM
Douglas Crockford
Guest
 
Posts: n/a

re: checking type?


> If - obj - happened to be - null - then - type - would still be "object"[color=blue]
> but the property testing would cause errors. Maybe:-
>
> if ((obj) && (type == 'object')){[/color]

Yup. I put stuff like that into so functions. For example,

function isFunction(a) {
return typeof a == 'function';
}
function isNull(a) {
return typeof a == 'object' && !a;
}
function isNumber(a) {
return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
return (typeof a == 'object' && a) || isFunction(a);
}

I find that typeof's own understanding of types is too fuzzy.

http://www.crockford.com/javascript/remedial.html

  #9  
Old July 20th, 2005, 11:24 AM
Keith Bowes
Guest
 
Posts: n/a

re: checking type?


Robert Mark Bram wrote:[color=blue]
> Howdy All!
>
> How can you tell the type of an object?
>
> I am not talking about using "typeof" ..
>
> I am talking about being able to determine if an object is a Date or String
> ...
>[/color]

You can use the instanceof operator:
var now = new Date();
alert(now instanceof Date);


Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
Telling what type an object is and checking type Brian Henry answers 3 November 20th, 2005 05:29 PM
Python 2.4 removes None data type? gaudetteje@gmail.com answers 16 July 18th, 2005 11:25 PM
A little stricter type checking Tongu? Yumruk answers 5 July 18th, 2005 03:58 PM
checking type of my own objects Tobiah answers 2 July 18th, 2005 03:32 AM