Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at


Obsolete since JavaScript 1.8.5
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Warning: JSObjectOps is not a supported API. Details of the API may change from one release to the next. This documentation should be considered SpiderMonkey internals documentation, not API documentation. See bug 408416 for details.

The JSObjectOps.getRequiredSlot and setRequiredSlot callbacks get and set a required slot—one that should already have been allocated.


typedef jsval (*JSGetRequiredSlotOp)(JSContext *cx, JSObject *obj,
    uint32 slot);

typedef JSBool (*JSSetRequiredSlotOp)(JSContext *cx, JSObject *obj,
    uint32 slot, jsval v);
Name Type Description
cx JSContext * The JS context in which we access the slot.
obj JSObject * The object whose slot we access.
slot uint32 The index of the slot to access. See note below.
v jsval The value to store in the slot, for JSSetRequiredSlotOp.


Get and set a required slot, one that should already have been allocated. These operations are infallible, so required slots must be pre-allocated, or implementations must suppress out-of-memory errors. The native ops (js_ObjectOps, see js/src/jsobj.c) access slots reserved by including a call to the JSCLASS_HAS_RESERVED_SLOTS(n) macro in the JSClass.flags initializer.

Note: The slot parameter is a zero-based index into obj slots, unlike the index parameter to the JS_GetReservedSlot and JS_SetReservedSlot API entry points, which is a zero-based index into the JSCLASS_RESERVED_SLOTS(clasp) reserved slots that come after the initial well-known slots: proto, parent, class, and optionally, the private data slot.

Document Tags and Contributors

 Contributors to this page: arai, fscholz, tschneidereit, Jorend, Jimb
 Last updated by: arai,