getProperty如何在SpiderMonkey中工作?

时间:2016-01-24 18:53:20

标签: firefox 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)会做什么?

感谢。

1 个答案:

答案 0 :(得分:1)

我相信您可以通过实现JSClass(过时文档警告)为脚本提供自定义行为的对象。或者这些日子,使用Proxy从JS土地上做起来可能会更容易。

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

您可能还想在IRC或其中一个other channels listed at the SpiderMonkey MDN page询问。