getProperty 在 SpiderMonkey 中是如何工作的



我正在查看SpiderMonkey的源代码,并试图了解如何自定义函数"getProperty"。但是很难跟踪到"getProperty"真正将属性设置为返回值的正确位置。所以任何人都可以在代码中显示"正确的位置"?

目前,我在NativeObject.h:

inline bool
js::GetProperty(JSContext* cx, HandleObject obj, HandleObject receiver, HandleId id, MutableHandleValue vp)
{
    if (GetPropertyOp op = obj->getOps()->getProperty)
        return op(cx, obj, receiver, id, vp);
    return NativeGetProperty(cx, obj.as<NativeObject>(), receiver, id, vp);
}

op(cx, obj, receiver, id, vp) 会做什么?

谢谢。

我相信

您可以通过实现JSClass(过时的文档警告)为脚本提供具有自定义行为的对象。或者现在用Proxy从 JS 土地上做到这一点可能更容易。

负责返回属性的代码取决于对象的类型和属性。我真的不确定你为什么要看NativeObject。jsobj.h 是一个更常见的实现。

您可能还想在IRC或SpiderMonkey MDN页面上列出的其他频道之一中提问。