我正在查看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页面上列出的其他频道之一中提问。