Loo*_*urr 26 c++ v8 embedded-v8
我无法理解SetInternalFieldCount()函数的实际功能.在v8文档中,该函数被描述为设置"从此模板生成的对象的内部字段数".这是非常自我解释和无意义的.
在v8嵌入器的指南中,他们给出了这个例子
point_templ->SetInternalFieldCount(1);
Run Code Online (Sandbox Code Playgroud)
并说"这里内部字段计数设置为1,这意味着该对象有一个内部字段,索引为0,指向C++对象."
但究竟什么是内部领域以及设置此值实际上告诉程序的是什么?
ief*_*rge 24
功能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
Run Code Online (Sandbox Code Playgroud)
或对齐指针:
obj->SetAlignedPointerInInternalField(0, p); // 0 means 1-st internal field
Run Code Online (Sandbox Code Playgroud)
在这个程序的另一部分之后你可以得到你的指针:
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
}
Run Code Online (Sandbox Code Playgroud)