Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old July 20th, 2005, 11:23 AM
Robert Mark Bram
Guest
 
Posts: n/a
Default checking type?

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
Default 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
Default 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
Default 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
Default 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
Default 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
Default 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
Default 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
Default 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);


 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles