我看不懂什么 SetInternalFieldCount()
函数实际执行。v8文档中的函数被描述为设置" 对象的内部字段的数量从该模板生成消息" 这些都很意义和unilluminating 。
在 v8 embedder指南" 他们给本示例
point_templ->SetInternalFieldCount(1);
并说" 这内部字段计数设置为1,其索引为0,这意味着该对象有一个内部字段指向C++对象。"
但到底是一个内部字段,设置此值真正辨别出什么计划?
我看不懂什么 SetInternalFieldCount()
函数实际执行。v8文档中的函数被描述为设置" 对象的内部字段的数量从该模板生成消息" 这些都很意义和unilluminating 。
在 v8 embedder指南" 他们给本示例
point_templ->SetInternalFieldCount(1);
并说" 这内部字段计数设置为1,其索引为0,这意味着该对象有一个内部字段指向C++对象。"
但到底是一个内部字段,设置此值真正辨别出什么计划?
- 事务中不能使用高级函数. SetInternalFieldCount
指示V8分配内部存储插槽以满足每个实例使用模板创建。此allowes你存储任何类型的信息在那些实例。
很有用,例如,存储连接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
}
从v8 .h:
/**
* Sets the number of internal fields for objects generated from
* this template.
*/
void SetInternalFieldCount(int value);
如果给一个类设置了5 个数据成员,那么你应该SetInternalFieldCount为5 。
class MyObject: public node::ObjectWrap {
public:
int i;
int j;
int n;
int z;
int w;
}
Function It is useful, for example, to store connection between V8 object and C++ class instance.
or for aligned pointer:
After this in another part of a program you can get your pointer like this:
| |||||||||
|