我正在查看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)会做什么?
感谢。
答案 0 :(得分:1)
我相信您可以通过实现JSClass
(过时文档警告)为脚本提供自定义行为的对象。或者这些日子,使用Proxy
从JS土地上做起来可能会更容易。
返回属性的代码取决于对象的类型和属性。我真的不确定你为什么要看NativeObject。 jsobj.h是一种更常见的实施方式。
您可能还想在IRC或其中一个other channels listed at the SpiderMonkey MDN page询问。