什么属性警示我?

问题描述:

当我编写Javascript时,我使用window.alert()进行调试。通常我传递变量来提醒,并弹出一个包含该变量值的字符串。但是,如果我传递一个对象的警报,它会告诉我该对象的类型。例如:什么属性警示我?

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

那位,说[object blah blah]的部分。那是什么财产?我最近开始制作自己的对象来封装我正在处理的网站的有用部分...但是当我传递自己的对象来提醒它时,会给我一个通用消息[object Object],如果我有做了一堆不同种类的物体。比如,我希望我的对象能够返回更多沿着[object My_Object]行的东西。

是否有一个属性,我可以在函数My_Object()中设置,它会告诉警报我想让它告诉我什么?

谢谢!

z。

尝试重新定义类类型的“toString()”:它用于创建对象的字符串类型。默认是[object <type>],但那不是你想要的,不是。

虽然“您可以为您创建的自定义对象覆盖此方法,但如果您不覆盖自定义对象中的toString,toString会返回[object type],其中type是创建该对象的构造函数的对象类型或名称对象“,http://www.synchro.net/docs/js/ref/object.html#1193350

+0

只是改变“类型”没有工作......但写一个快速的toString方法很好! – Ziggy 2010-01-18 00:22:42

您必须覆盖toString()方法。否则,将使用Object.prototype.toString,它将返回"[object Foo]",其中Foo是对象的内部(即不可访问)类属性的值。

而不是用alert()进行调试,你应该看看Firebug,以及优秀的网页开发工具,具有更好的HTML检查,javascript调试和其他好东西。

+0

+1。或者WebKit Web Inspector(在Safari和Chrome中)或IE 8 Developer Toolbar,或Opera Dragonfly或Firebug Lite(适用于旧版浏览器)。 – eyelidlessness 2010-01-20 06:01:04