【问题标题】:What property is alert showing me?向我显示警报的属性是什么?
【发布时间】:2010-01-17 23:44:12
【问题描述】:

在编写 Javascript 时,我使用 window.alert() 进行调试。通常我将变量传递给警报,它会弹出一个包含该变量值的字符串。但是,如果我通过 alert 一个对象,它会告诉我对象的类型。例如:

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

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

我可以在函数 My_Object() 中设置一个属性来告诉 alert 我想让它告诉我什么吗?

谢谢!

z.

【问题讨论】:

    标签: javascript object alert


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 只是改变“类型”没有用...但是写一个快速的 toString 方法很好!
      【解决方案3】:

      您应该看看Firebug,而不是使用alert() 进行调试,这是一个出色的Web 开发工具,具有更好的HTML 检查、javascript 调试和其他好东西。

      【讨论】:

      • +1。或 WebKit Web Inspector(在 Safari 和 Chrome 中)或 IE 8 开发人员工具栏,或 Opera Dragonfly,或旧版浏览器的 Firebug Lite。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2014-02-16
      • 2019-07-07
      • 2022-11-19
      • 2011-01-27
      相关资源
      最近更新 更多