函数SetInternalFieldCount
会指示V8为使用模板创建的每个实例分配内部存储槽。 这允许您在这些实例中存储任何类型的信息。
例如,将V8对象与C ++类实例之间的连接存储起来非常有用。
void* p; // any pointer
Local<Object> obj = point_templ->NewInstance();
obj->SetInternalField(0, External::New(p)); // 0 means 1-st internal field
或用于对齐指针:
obj->SetAlignedPointerInInternalField(0, p); // 0 means 1-st internal field
在程序的另一个部分,您可以像这样获取指针:
v8::Handle<v8::Object> handle; // some object handle
if (handle->InternalFieldCount() > 0)
{
void* p = handle->GetAlignedPointerFromInternalField(0); // from 1-st field
// ... do something with p, e.g. cast it to wrapped C++ class instance
}