# Interoperate with native engine API

ScriptX provides some basic interfaces to interoperate with native engine APIs.
These basic interfaces appear in the form of auxiliary classes.

such as:
1. `V8` -> `script::v8_interop`
1. `JavaScriptCore` -> `script::jsc_interop`
1. `Lua` -> `script::lua_interop`

Mainly provide capabilities:
1. Get the internal native engine instance from the engine pointer
2. Conversion of `script::Local` reference and native reference type
3. Conversion of `script::Arguments` and native call parameters

These `xx_interop` auxiliary classes will only appear when the corresponding backend is selected at compile time, so macro isolation is required when calling related APIs.

See [InteroperateTest](../../test/src/InteroperateTest.cc) for details

ScriptX positions itself as a helper to help you call the native engine API, but when the helper is weak (the ability is not exposed), you can do it yourself at any time!