2016-01-24 28 views
0

我正在查看SpiderMonkey的源代碼並試圖瞭解如何自定義函數'getProperty'。但很難追蹤到'getProperty'真正將財產設置爲返回值的適當位置。所以任何人都可以在代碼中顯示'適當的地方'?getProperty如何在SpiderMonkey中工作?

目前,我在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,接收器,ID,VP)嗎?

謝謝。

回答

0

我相信你可以通過執行JSClass(過時的文檔警告)爲腳本提供自定義行爲的對象。或者這些日子,它可能會更容易做到這一點從JS土地Proxy

負責返回屬性的代碼取決於對象的類型和屬性。我真的不知道你爲什麼在看NativeObject。 jsobj.h是一個更常見的實現。

您可能也想問IRC或other channels listed at the SpiderMonkey MDN page之一。