情况是这样的:我想对我在对象 + 原型上定义的所有函数使用单个 duktape/C 函数。为此,我有一个函数映射,它采用函数名称和回调(std::function
实际上是 a),并且可以轻松地进行一些常见处理并具有更简单的回调(甚至可以为此使用就地 lambda)。
这已经很好地工作了,但有一个问题:不同对象上的相同命名函数。为了消除歧义,我现在使用对象(或原型,它也是一个对象)的堆指针作为进一步的限定符。因此,当调用我的中央 duktape/C 函数时,我首先查看该函数是否是全局的(即在全局对象上定义)。如果失败,我会得到this
绑定并使用它的堆指针进行查找。如果这也失败了,我会遍历原型链,看看是否可以在其中一个原型上找到函数。
这适用于 99%,除非我没有this
绑定(或错误的绑定,例如 for Function.prototype.apply()
)。
我的问题是:如何在我的中央 duktape/C 回调中获取函数的原始原型?