【问题标题】:Object functions not showing up with console.log对象函数未随 console.log 显示
【发布时间】:2013-02-06 16:57:45
【问题描述】:

好的,我正在尝试通过 Chrome 的 JavaScript 控制台使用 console.log(editor)(或 console.log(editor.getSession()))显示对象(特别是 Ace editor 对象)的所有功能/属性。

问题是 - 研究了 Ace 背后的代码 - 我知道有一些功能(并且我已经使用过它们) - 当我试图“打印”对象。

发生了什么事?如何获得完整的对象/功能树? (最好是一些可读的格式)


提示:

我实际上需要这个来获得可用方法的完整列表(其中大部分甚至没有记录)。


编辑:

重现问题的步骤:

【问题讨论】:

    标签: javascript object logging console ace-editor


    【解决方案1】:

    某些框架会覆盖 console.log 功能。

    大多数情况下你可以写editor.valueOf()而不是console.log(editor)来获取所有属性和方法。

    还有一种增强方式:

    for (key in editor) {
        console.log(key);
        console.log(editor[key]);
        // or
        editor[key].valueOf();
    }
    

    【讨论】:

    • 谢谢伙计,但不幸的是它不起作用。请检查对我最初帖子的编辑。
    • 这些 getter 和 setter 可能是在访问期间生成的。所以它们在现实中并不存在。如果您查看console.log,您将看到负责getSession 的“会话”以及属性“断点”。并且方法在 proto 部分中可用。
    • 正如我所写:for (key in editor) {console.log(key);}也在列表中显示 getSession!
    • 好的。对,就是这样! (我对 JS 没有那么丰富的经验,老实说,我不知道 __proto__ 部分可能隐藏了什么)。非常感谢!你无法想象你为我节省了多少时间。 Ace Editor 很棒,但仍有 90% 未记录在案。所以我能发现任何有意义的函数的唯一方法是检查它的 14000 多行代码(实际上是猜测)。所以,太好了!
    • 当你输入没有'()'的函数(例如editor.getSession)时,它会显示实现及其参数。
    【解决方案2】:
    for(var i in ace){ console.log(i); };
    

    或者试试

    inspect(ace);
    

    【讨论】:

    • 谢谢,但是这个也不起作用。请检查我的初始帖子的编辑。
    猜你喜欢
    • 2018-05-28
    • 2011-12-16
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2017-11-05
    相关资源
    最近更新 更多