admin管理员组

文章数量:1025535

When I am writing Javascript, I use window.alert() to debug. Usually I pass variables to alert and it pops up with a string containing that variables value. However, if I pass alert an object, it tells me the type of the object. For example:

var form = document.getElementById("my_form");
alert(form); // returns [object HTMLFormElement]

That bit, the part that says [object blah blah]. What property is that? I have recently started making my own objects to encapsulate useful parts of the site I am working on... but when I pass my own objects to alert it gives me the generic message [object Object], which is not very helpful if I have made a bunch of different kinds of object. I would prefer, for instance, my object to return to me something more along the lines of [object My_Object].

Is there a property I can set in function My_Object() that will tell alert what I want it to tell me?

Thanks!

z.

When I am writing Javascript, I use window.alert() to debug. Usually I pass variables to alert and it pops up with a string containing that variables value. However, if I pass alert an object, it tells me the type of the object. For example:

var form = document.getElementById("my_form");
alert(form); // returns [object HTMLFormElement]

That bit, the part that says [object blah blah]. What property is that? I have recently started making my own objects to encapsulate useful parts of the site I am working on... but when I pass my own objects to alert it gives me the generic message [object Object], which is not very helpful if I have made a bunch of different kinds of object. I would prefer, for instance, my object to return to me something more along the lines of [object My_Object].

Is there a property I can set in function My_Object() that will tell alert what I want it to tell me?

Thanks!

z.

Share Improve this question asked Jan 17, 2010 at 23:44 ZiggyZiggy 22.5k28 gold badges79 silver badges110 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 6

You must overwrite the toString() method. Otherwise, Object.prototype.toString will be used, which returns "[object Foo]", where Foo is the value of the internal (ie inaccessible) class property of the object.

Try redefining "toString()" of your class prototype: it's used to create a string type of an object. Default it's [object <type>], but that's not what you want, is it.

Though, "You can override this method for custom objects that you create. If you do not override toString in a custom object, toString returns [object type], where type is the object type or the name of the constructor function that created the object.", http://www.synchro/docs/js/ref/object.html#1193350

Instead of debugging with alert(), you should look at Firebug, and outstanding web development tool, with better HTML inspection, javascript debugging, and other goodies.

When I am writing Javascript, I use window.alert() to debug. Usually I pass variables to alert and it pops up with a string containing that variables value. However, if I pass alert an object, it tells me the type of the object. For example:

var form = document.getElementById("my_form");
alert(form); // returns [object HTMLFormElement]

That bit, the part that says [object blah blah]. What property is that? I have recently started making my own objects to encapsulate useful parts of the site I am working on... but when I pass my own objects to alert it gives me the generic message [object Object], which is not very helpful if I have made a bunch of different kinds of object. I would prefer, for instance, my object to return to me something more along the lines of [object My_Object].

Is there a property I can set in function My_Object() that will tell alert what I want it to tell me?

Thanks!

z.

When I am writing Javascript, I use window.alert() to debug. Usually I pass variables to alert and it pops up with a string containing that variables value. However, if I pass alert an object, it tells me the type of the object. For example:

var form = document.getElementById("my_form");
alert(form); // returns [object HTMLFormElement]

That bit, the part that says [object blah blah]. What property is that? I have recently started making my own objects to encapsulate useful parts of the site I am working on... but when I pass my own objects to alert it gives me the generic message [object Object], which is not very helpful if I have made a bunch of different kinds of object. I would prefer, for instance, my object to return to me something more along the lines of [object My_Object].

Is there a property I can set in function My_Object() that will tell alert what I want it to tell me?

Thanks!

z.

Share Improve this question asked Jan 17, 2010 at 23:44 ZiggyZiggy 22.5k28 gold badges79 silver badges110 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 6

You must overwrite the toString() method. Otherwise, Object.prototype.toString will be used, which returns "[object Foo]", where Foo is the value of the internal (ie inaccessible) class property of the object.

Try redefining "toString()" of your class prototype: it's used to create a string type of an object. Default it's [object <type>], but that's not what you want, is it.

Though, "You can override this method for custom objects that you create. If you do not override toString in a custom object, toString returns [object type], where type is the object type or the name of the constructor function that created the object.", http://www.synchro/docs/js/ref/object.html#1193350

Instead of debugging with alert(), you should look at Firebug, and outstanding web development tool, with better HTML inspection, javascript debugging, and other goodies.

本文标签: javascriptWhat property is alert showing meStack Overflow