【问题标题】:Is it possible to add Function.caller support to Rhino?是否可以将 Function.caller 支持添加到 Rhino?
【发布时间】:2012-02-17 16:47:11
【问题描述】:

看起来,Rhino 不支持函数的 caller 属性 - 有谁知道是否有允许这样做的分支,即使只是在解释器模式下?

如果没有,是否有人对如何添加它有任何一般的想法?

【问题讨论】:

    标签: java javascript rhino


    【解决方案1】:

    从来没有听说过javascript中的Function.prototype.caller,但是有arguments.callee.caller,根据互联网,Rhino确实不支持;

    如果您需要获取堆栈跟踪,有一个解决方案的想法: http://groups.google.com/group/mozilla.dev.tech.js-engine.rhino/browse_thread/thread/a8db6d5c4c729f0e/a5f717c02af610ea?pli=1

    【讨论】:

    • arguments.callee 只是给你一个对当前函数的引用——因此arguments.callee.caller 正在获取当前函数的caller 属性。
    • 你可以通过JS错误的stack属性在Rhino中获取堆栈跟踪,所以我认为没关系。
    • arguments.callee.caller 获取父范围函数。 (function foo() { return (function bar() { return arguments.callee.caller.name) })() })() -> foo
    • 它获得一个对调用它的函数的引用——这不一定是它的父作用域。
    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2012-06-20
    • 2023-01-25
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多