【问题标题】:How to do JavaScript object introspection?如何进行 JavaScript 对象自省?
【发布时间】:2010-09-24 14:39:16
【问题描述】:

当经过所有探测后,一个据报道有效的对象对所探测的任何属性返回“未定义”时该怎么办?我使用 jQuery,$('selector').mouseover(function() { }); 函数范围内的 $(this) 一切都返回“未定义”。选择器是地图标签的“区域”,我正在寻找它的父属性。

【问题讨论】:

    标签: javascript jquery introspection


    【解决方案1】:

    您的问题有点模糊,能否提供更多细节?

    至于找出一个对象及其属性的值,有很多方法可以做到,包括使用 Firebug 或其他一些调试工具等。这里有一个快速而肮脏的函数,可能会帮助你开始直到您可以提供更多详细信息:

    function listProperties(obj) {
       var propList = "";
       for(var propName in obj) {
          if(typeof(obj[propName]) != "undefined") {
             propList += (propName + ", ");
          }
       }
       alert(propList);
    }
    

    这将显示您传递给它的不是undefined 的对象的属性列表。

    希望对您有所帮助...

    【讨论】:

    • 在 Firefox 中,您可以简单地对对象调用 toSource(): var o = { "moo": "cow", "woof", "dog" }; o.toSource(); //"({moo:"cow", woof:"dog"})"
    • 或者,就此而言,使用现在内置的 JSON 对象并在其上调用 stringify() - 结果有点不同,但差别不大。 developer.mozilla.org/En/Using_native_JSON
    • @Lothar - 实际上,在某种程度上,确实如此。自省允许找出对象的方法和属性,就像我上面提供的函数一样。您只是对我们没有专门提到 Java 的事实感到迂腐吗?如果是这样,那么...
    【解决方案2】:

    selector 是元素的名称吗?如果是这样,那么您应该将其引用为:

    $('area#selector')
    

    $('#selector')
    

    否则它将尝试查找(不存在的)“选择器”HTML 标记,但显然找不到。

    【讨论】:

    • 是的,使用了正确的符号:$('#myarea') 其中 id='myarea' 表示区域标签。谢谢。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 2013-10-12
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多