- From: Garrett Smith <dhtmlkitchen@gmail.com>
- Date: Mon, 31 Dec 2007 01:34:49 -0800
- To: "Web API WG (public)" <public-webapi@w3.org>
On Dec 30, 2007 7:19 PM, Cameron McCormack <cam@mcc.id.au> wrote: > > Hi Garrett. > > Garrett Smith: > > Checking an object's toString return value to try and determine what > > it is is not a reliable way to check what type of object it is: > > toString() says nothing about an object's interface, other than the > > fact that, if no error is thrown, it supports toString(). > > > > For example: > > "[object Window]".toString() > > > > Method toString is useful for providing a readable representation of > > an object's state. In ES, as David said, it's "[object " + [[Class]] + > > "]". > > You can however use Object.prototype.toString.call() to ensure you are > getting Object's version of toString(), and not some overridden version: > > >>> Object.prototype.toString.call("[object Window]") > [object String] > Yeah, that is true. But not 100% foolproof: Function.prototype.call uses the calling context when arg0 is undefined or null. Object.prototype.toString.call( undefined ) Object.prototype.toString.call( null ) > You can rely on the string between "[object " and "]" to be the > [[Class]] of the object. (Well, assuming Object hasn't been changed.) > > -- > > Cameron McCormack, http://mcc.id.au/ > xmpp:heycam@jabber.org ▪ ICQ 26955922 ▪ MSN cam@mcc.id.au > > -- Monkey, so they say, is the root of all people today.
Received on Monday, 31 December 2007 09:34:57 UTC